#title: "Data Preparation & Summary Stats"
#author: "Qianhui Li"
setwd("/Users/qianhuili/Desktop/GitHub/AAE724/Script/Data_cleaning")
library(tidyr)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(leaps)
library(glmnet)
## Loading required package: Matrix
##
## Attaching package: 'Matrix'
## The following objects are masked from 'package:tidyr':
##
## expand, pack, unpack
## Loading required package: foreach
## Loaded glmnet 2.0-18
library(ggplot2)
library(gmodels)
library(MASS)
##
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
##
## select
library(corrplot)
## corrplot 0.84 loaded
library(ISLR)
library(tree)
library(gridExtra)
##
## Attaching package: 'gridExtra'
## The following object is masked from 'package:dplyr':
##
## combine
library(ROCR)
## Loading required package: gplots
##
## Attaching package: 'gplots'
## The following object is masked from 'package:stats':
##
## lowess
library(rpart)
library(rpart.plot)
library(rattle)
## Rattle: A free graphical interface for data science with R.
## Version 5.2.0 Copyright (c) 2006-2018 Togaware Pty Ltd.
## Type 'rattle()' to shake, rattle, and roll your data.
library(pROC)
## Type 'citation("pROC")' for a citation.
##
## Attaching package: 'pROC'
## The following object is masked from 'package:gmodels':
##
## ci
## The following object is masked from 'package:glmnet':
##
## auc
## The following objects are masked from 'package:stats':
##
## cov, smooth, var
library(corrplot)
library(lfe)
library(car)
## Loading required package: carData
##
## Attaching package: 'car'
## The following object is masked from 'package:dplyr':
##
## recode
library(tidyverse)
## Registered S3 method overwritten by 'cli':
## method from
## print.tree tree
## ── Attaching packages ─────────────────────────────────────────── tidyverse 1.2.1 ──
## ✔ tibble 2.1.3 ✔ purrr 0.3.2
## ✔ readr 1.3.1 ✔ stringr 1.4.0
## ✔ tibble 2.1.3 ✔ forcats 0.4.0
## ── Conflicts ────────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ purrr::accumulate() masks foreach::accumulate()
## ✖ gridExtra::combine() masks dplyr::combine()
## ✖ Matrix::expand() masks tidyr::expand()
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ✖ Matrix::pack() masks tidyr::pack()
## ✖ car::recode() masks dplyr::recode()
## ✖ MASS::select() masks dplyr::select()
## ✖ purrr::some() masks car::some()
## ✖ Matrix::unpack() masks tidyr::unpack()
## ✖ purrr::when() masks foreach::when()
library(viridis)
## Loading required package: viridisLite
library(ggpubr)
## Loading required package: magrittr
##
## Attaching package: 'magrittr'
## The following object is masked from 'package:purrr':
##
## set_names
## The following object is masked from 'package:tidyr':
##
## extract
library(plotly)
##
## Attaching package: 'plotly'
## The following object is masked from 'package:MASS':
##
## select
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
library(corrplot)
library(ROSE)
## Loaded ROSE 0.0-3
library(naniar)
library(caret)
## Loading required package: lattice
##
## Attaching package: 'caret'
## The following object is masked from 'package:purrr':
##
## lift
library(blorr)
library(pROC)
#=============================================
##Data Preparation
bankoriginal<-read.csv("bank_data.csv",header=TRUE, sep=";", na.strings=c("unknown","non-existent"))
#Check # & % of missing values
gg_miss_var(bankoriginal)

gg_miss_var(bankoriginal, show_pct = TRUE)

#Since there is "999" in pdays means client was not previously contacted, I convert pdays into a dummy variable, never contacted(999)=0,others=1.
bankoriginal$pdays <-as.factor(bankoriginal$pdays)
bankoriginal$pdays <-ifelse(bankoriginal$pdays==999,0,1)
#The first variable that has the largest proportion of missing values is "default",
#However, it may be possible that customer is not willing to disclose this information to the banking representative.
#Hence the unknown value in 'default' is actually a separate value.
#Thus I kept the variable "default", and I think it also make sense for "loan" and "housing" loan variable
bankoriginal$default <- as.character(bankoriginal$default)
bankoriginal$default[is.na(bankoriginal$default)] <- "refuse2disclose"
bankoriginal$loan<-as.character(bankoriginal$loan)
bankoriginal$loan[is.na(bankoriginal$loan)] <- "refuse2disclose"
bankoriginal$housing<-as.character(bankoriginal$housing)
bankoriginal$housing[is.na(bankoriginal$housing)] <- "refuse2disclose"
#As indicated by the data contributor, the duration is not known before a call is performed.
#Also, after the end of the call y is obviously known.
#Thus, this input should only be included for benchmark purposes and should be discarded if the intention is to have a realistic predictive model.
#Thus I removed "duration"
bankoriginal = bankoriginal %>%
select(-duration)
#check for missing value graph again
gg_miss_var(bankoriginal)

gg_miss_var(bankoriginal, show_pct = TRUE)

#omit missing values
bank<-na.omit(bankoriginal)
sum(is.na(bank))
## [1] 0
#Data summary
summary(bank)
## age job marital
## Min. :17.00 admin. :10159 divorced: 4417
## 1st Qu.:32.00 blue-collar: 8788 married :23748
## Median :38.00 technician : 6520 single :11026
## Mean :39.86 services : 3814
## 3rd Qu.:47.00 management : 2798
## Max. :98.00 retired : 1617
## (Other) : 5495
## education default housing
## basic.4y : 4118 Length:39191 Length:39191
## basic.6y : 2264 Class :character Class :character
## basic.9y : 6006 Mode :character Mode :character
## high.school : 9464
## illiterate : 18
## professional.course: 5225
## university.degree :12096
## loan contact month day_of_week
## Length:39191 cellular :24983 may :13128 fri:7417
## Class :character telephone:14208 jul : 6767 mon:8107
## Mode :character aug : 5947 thu:8194
## jun : 5014 tue:7683
## nov : 3973 wed:7790
## apr : 2493
## (Other): 1869
## campaign pdays previous poutcome
## Min. : 1.000 Min. :0.0000 Min. :0.0000 failure : 4044
## 1st Qu.: 1.000 1st Qu.:0.0000 1st Qu.:0.0000 nonexistent:33877
## Median : 2.000 Median :0.0000 Median :0.0000 success : 1270
## Mean : 2.566 Mean :0.0357 Mean :0.1704
## 3rd Qu.: 3.000 3rd Qu.:0.0000 3rd Qu.:0.0000
## Max. :56.000 Max. :1.0000 Max. :7.0000
##
## emp.var.rate cons.price.idx cons.conf.idx euribor3m
## Min. :-3.40000 Min. :92.20 Min. :-50.80 Min. :0.634
## 1st Qu.:-1.80000 1st Qu.:93.08 1st Qu.:-42.70 1st Qu.:1.344
## Median : 1.10000 Median :93.44 Median :-41.80 Median :4.857
## Mean : 0.08324 Mean :93.57 Mean :-40.54 Mean :3.624
## 3rd Qu.: 1.40000 3rd Qu.:93.99 3rd Qu.:-36.40 3rd Qu.:4.961
## Max. : 1.40000 Max. :94.77 Max. :-26.90 Max. :5.045
##
## nr.employed y
## Min. :4964 no :34831
## 1st Qu.:5099 yes: 4360
## Median :5191
## Mean :5167
## 3rd Qu.:5228
## Max. :5228
##
#convert variable types
sapply(bank,class)
## age job marital education default
## "integer" "factor" "factor" "factor" "character"
## housing loan contact month day_of_week
## "character" "character" "factor" "factor" "factor"
## campaign pdays previous poutcome emp.var.rate
## "integer" "numeric" "integer" "factor" "numeric"
## cons.price.idx cons.conf.idx euribor3m nr.employed y
## "numeric" "numeric" "numeric" "numeric" "factor"
#numerical variables
bank$age <- as.numeric(bank$age)
bank$campaign <- as.numeric(bank$campaign)
bank$previous <- as.numeric(bank$previous)
bank$emp.var.rate <- as.numeric(bank$emp.var.rate)
bank$cons.price.idx <- as.numeric(bank$cons.price.idx)
bank$cons.conf.idx <- as.numeric(bank$cons.conf.idx)
bank$euribor3m <- as.numeric(bank$euribor3m)
bank$nr.employed <- as.numeric(bank$nr.employed)
#categorical variables
bank$job <-as.factor(bank$job)
bank$marital <-as.factor(bank$marital)
bank$education <-as.factor(bank$education)
bank$default <-as.factor(bank$default)
bank$loan <-as.factor(bank$loan)
bank$housing<-as.factor(bank$housing)
bank$contact <-as.factor(bank$contact)
bank$poutcome <-as.factor(bank$poutcome)
bank$day_of_week <-as.factor(bank$day_of_week)
bank$month <-as.factor(bank$month)
bank$y<-ifelse(bank$y =='yes',1,0)
bank$y <-as.factor(bank$y)
#Check for outliers for numerical variables
p1_age <- ggplot(bank, aes(y, age)) + geom_boxplot(aes(fill = y))
p1_campaign <- ggplot(bank, aes(y, campaign)) + geom_boxplot(aes(fill = y))
p1_previous <- ggplot(bank, aes(y, previous)) + geom_boxplot(aes(fill = y))
p1_emp.var.rate <- ggplot(bank, aes(y, emp.var.rate)) + geom_boxplot(aes(fill = y))
p1_cons.price.idx <- ggplot(bank, aes(y, cons.price.idx)) + geom_boxplot(aes(fill = y))
p1_cons.conf.idx<- ggplot(bank, aes(y, cons.conf.idx)) + geom_boxplot(aes(fill = y))
p1_euribor3m<- ggplot(bank, aes(y, euribor3m)) + geom_boxplot(aes(fill = y))
p1_nr.employed<- ggplot(bank, aes(y, nr.employed)) + geom_boxplot(aes(fill = y))
a1 <- c(p1_age,p1_campaign)
ggarrange(p1_age,p1_campaign,
nrow = 1)

b1 <- c(p1_previous,p1_emp.var.rate,
p1_cons.price.idx)
ggarrange(p1_previous,p1_emp.var.rate,
p1_cons.price.idx,
nrow = 1)

g1 <- c(p1_cons.conf.idx,
p1_euribor3m,p1_nr.employed)
ggarrange(p1_cons.conf.idx,p1_euribor3m,p1_nr.employed,
nrow = 1)

#age==38770
x <- bank$age
qnt <- quantile(x, probs=c(.25, .75), na.rm = T)
H <- 1.5 * IQR(x, na.rm = T)
hb <- H + qnt[2]
hb #remove>69.5
## 75%
## 69.5
ab <- bank[which(bank$age<hb),]
#campaign==35982
x1 <- bank$campaign
qnt1 <- quantile(x1, probs=c(.25, .75), na.rm = T)
H1 <- 1.5 * IQR(x1, na.rm = T)
hb1<- H1 + qnt1[2]
hb1 #remove>6
## 75%
## 6
ac <- bank[which(bank$campaign<hb1),]
#cons.conf.idx
x5 <- bank$cons.conf.idx
qnt5 <- quantile(x5, probs=c(.25, .75), na.rm = T)
H5 <- 1.5 * IQR(x5, na.rm = T)
hb5<- H5 + qnt5[2]
hb5 #remove>-26.95
## 75%
## -26.95
#From the boxplot for "previous", I decided to treat observations larger than 2 as outliers, thus remove them.
#Result after removing outliers in numerical variables(34,370obs with 20 variables)
bank <- bank[which(bank$age<hb & bank$campaign<hb1 & bank$previous<2 & bank$cons.conf.idx<hb5),]
#Check for outliers for categorical variables with more than 3 categories
pic_job1 <-ggplot(bank, aes(x=job)) + geom_histogram(aes(y=(..count..)), stat='count', fill="slate blue", alpha=0.5) + theme_minimal() +
theme(plot.title = element_text(face = "bold", size = 14, hjust = 0.5),
axis.text.x = element_text(angle = 45, hjust = 1, size=10),
axis.text.y = element_text(size=10)) +
labs(title = "Job",
x="Job", y="Counts")
## Warning: Ignoring unknown parameters: binwidth, bins, pad
pic_job1

#From the histogram, there is no obvious small number of counts for jobs
pic_edu1 <-ggplot(bank, aes(x=education)) + geom_histogram(aes(y=(..count..)), stat='count', fill="yellowgreen", alpha=0.5) + theme_minimal() +
theme(plot.title = element_text(face = "bold", size = 14, hjust = 0.5),
axis.text.x = element_text(angle = 45, hjust = 1, size=10),
axis.text.y = element_text(size=10)) +
labs(title = "Education",
x="Education Status", y="Counts")
## Warning: Ignoring unknown parameters: binwidth, bins, pad
pic_edu1

table(bank$education)
##
## basic.4y basic.6y basic.9y
## 3450 2022 5418
## high.school illiterate professional.course
## 8330 16 4592
## university.degree
## 10542
bank=bank[!as.factor(bank$education) %in% which(table(bank$education)=="illiterate"),]
bank$education=droplevels(bank$education)
#From the histogram, there is one obvious tiny number of counts for "illterate"(16 observations)
#Thus I decided to drop obs with "illiterate"
#After removing outliers for both numerical and categorical variables, there are 34,354 obs with 20 variables.
#Check and adjust data imbalance
counts <- table(bank$y)
barplot(counts,col=c("royalblue3","tomato3"),legend = rownames(counts), main = "Term Deposit")

CrossTable(bank$y)
##
##
## Cell Contents
## |-------------------------|
## | N |
## | N / Table Total |
## |-------------------------|
##
##
## Total Observations in Table: 34370
##
##
## | 0 | 1 |
## |-----------|-----------|
## | 30946 | 3424 |
## | 0.900 | 0.100 |
## |-----------|-----------|
##
##
##
##
#From the graph and the table, we can see that the dataset is highly imbalanced
#Since most machine learning classification algorithms are sensitive to unbalance in the predictor classes.
#I decided to resample the data by Synthetic Minority Oversampling Technique (SMOTE),
#which is a popular algorithm to creates synthetic observations of the minority class
set.seed(888)
balanced_data <- ROSE(y~., data=bank,seed=1)$data
CrossTable(balanced_data$y)
##
##
## Cell Contents
## |-------------------------|
## | N |
## | N / Table Total |
## |-------------------------|
##
##
## Total Observations in Table: 34370
##
##
## | 0 | 1 |
## |-----------|-----------|
## | 17253 | 17117 |
## | 0.502 | 0.498 |
## |-----------|-----------|
##
##
##
##
counts1 <- table(balanced_data$y)
barplot(counts1,col=c("royalblue3","tomato3"),legend = rownames(counts), main = "Customers' Responses")

#Hence, we now have 17245(50.2%) "no" responses, and 17109 (49.8%)"yes" responses, thus the data is balanced.
#=============================================
##Summary Statistics
#categorical variables exploration
pic_job <-ggplot(balanced_data, aes(x=job)) + geom_histogram(aes(y=(..count..)), stat='count', fill="slate blue", alpha=0.5) + theme_minimal() +
theme(plot.title = element_text(face = "bold", size = 14, hjust = 0.5),
axis.text.x = element_text(angle = 45, hjust = 1, size=10),
axis.text.y = element_text(size=10)) +
labs(title = "Job",
x="Job", y="Counts")
## Warning: Ignoring unknown parameters: binwidth, bins, pad
pic_job

#The graph shows that the there are alot of customers work in administritive sector, and the least as entrepreneur.
aa <-ggplot(balanced_data, aes(x = job , fill = y)) +
geom_bar(stat='count', position='dodge')
aa

#The graph shows that there are customers that are admin, retired, or technicial are more willing to accept the offer.
#\\\\\\
pic_marital <-ggplot(balanced_data, aes(x=marital)) + geom_histogram(aes(y=(..count..)), stat='count', fill="light pink", alpha=0.5) + theme_minimal() +
theme(plot.title = element_text(face = "bold", size = 14, hjust = 0.5),
axis.text.x = element_text(angle = 45, hjust = 1, size=10),
axis.text.y = element_text(size=10)) +
labs(title = "Marital",
x="Marital Status", y="Counts")
## Warning: Ignoring unknown parameters: binwidth, bins, pad
pic_marital

bb<-ggplot(balanced_data, aes(x = marital , fill = y)) +
geom_bar(stat='count', position='dodge')
bb

#\\\\\\
pic_edu <-ggplot(balanced_data, aes(x=education)) + geom_histogram(aes(y=(..count..)), stat='count', fill="yellowgreen", alpha=0.5) + theme_minimal() +
theme(plot.title = element_text(face = "bold", size = 14, hjust = 0.5),
axis.text.x = element_text(angle = 45, hjust = 1, size=10),
axis.text.y = element_text(size=10)) +
labs(title = "Education",
x="Education Status", y="Counts")
## Warning: Ignoring unknown parameters: binwidth, bins, pad
pic_edu

cc<-ggplot(balanced_data, aes(x = education , fill = y)) +
geom_bar(stat='count', position='dodge')
cc

#\\\\\\
pic_default <-ggplot(balanced_data, aes(x=default)) + geom_histogram(aes(y=(..count..)), stat='count', fill="light blue", alpha=0.5) + theme_minimal() +
theme(plot.title = element_text(face = "bold", size = 14, hjust = 0.5),
axis.text.x = element_text(angle = 45, hjust = 1, size=10),
axis.text.y = element_text(size=10)) +
labs(title = "Default",
x="Default Status", y="Counts")
## Warning: Ignoring unknown parameters: binwidth, bins, pad
pic_default

dd<-ggplot(balanced_data, aes(x = default , fill = y)) +
geom_bar(stat='count', position='dodge')
dd

#\\\\\\
pic_loan <-ggplot(balanced_data, aes(x=loan)) + geom_histogram(aes(y=(..count..)), stat='count', fill="orange1", alpha=0.5) + theme_minimal() +
theme(plot.title = element_text(face = "bold", size = 14, hjust = 0.5),
axis.text.x = element_text(angle = 45, hjust = 1, size=10),
axis.text.y = element_text(size=10)) +
labs(title = "Loan",
x="Loan Status", y="Counts")
## Warning: Ignoring unknown parameters: binwidth, bins, pad
pic_loan

ee<-ggplot(balanced_data, aes(x = loan , fill = y)) +
geom_bar(stat='count', position='dodge')
ee

#\\\\\\
pic_housing <-ggplot(balanced_data, aes(x=housing)) + geom_histogram(aes(y=(..count..)), stat='count', fill="grey69", alpha=0.5) + theme_minimal() +
theme(plot.title = element_text(face = "bold", size = 14, hjust = 0.5),
axis.text.x = element_text(angle = 45, hjust = 1, size=10),
axis.text.y = element_text(size=10)) +
labs(title = "Housing",
x="Housing Status", y="Counts")
## Warning: Ignoring unknown parameters: binwidth, bins, pad
pic_housing

ff<-ggplot(balanced_data, aes(x = housing , fill = y)) +
geom_bar(stat='count', position='dodge')
ff

#\\\\\\
pic_contact <-ggplot(balanced_data, aes(x=contact)) + geom_histogram(aes(y=(..count..)), stat='count', fill="firebrick", alpha=0.5) + theme_minimal() +
theme(plot.title = element_text(face = "bold", size = 14, hjust = 0.5),
axis.text.x = element_text(angle = 45, hjust = 1, size=10),
axis.text.y = element_text(size=10)) +
labs(title = "Contact",
x="Contact Approach", y="Counts")
## Warning: Ignoring unknown parameters: binwidth, bins, pad
pic_contact

gg<-ggplot(balanced_data, aes(x = contact , fill = y)) +
geom_bar(stat='count', position='dodge')
gg

#\\\\\\
pic_poutcome <-ggplot(balanced_data, aes(x=poutcome)) + geom_histogram(aes(y=(..count..)), stat='count', fill="yellow1", alpha=0.5) + theme_minimal() +
theme(plot.title = element_text(face = "bold", size = 14, hjust = 0.5),
axis.text.x = element_text(angle = 45, hjust = 1, size=10),
axis.text.y = element_text(size=10)) +
labs(title = "poutcome",
x="Previous Outcome", y="Counts")
## Warning: Ignoring unknown parameters: binwidth, bins, pad
pic_poutcome

hh<-ggplot(balanced_data, aes(x = poutcome , fill = y)) +
geom_bar(stat='count', position='dodge')
hh

#\\\\\\
pic_dow <-ggplot(balanced_data, aes(x=day_of_week)) + geom_histogram(aes(y=(..count..)), stat='count', fill="turquoise4", alpha=0.5) + theme_minimal() +
theme(plot.title = element_text(face = "bold", size = 14, hjust = 0.5),
axis.text.x = element_text(angle = 45, hjust = 1, size=10),
axis.text.y = element_text(size=10)) +
labs(title = "Day of Week",
x="Day of Week", y="Counts")
## Warning: Ignoring unknown parameters: binwidth, bins, pad
pic_dow

jj<-ggplot(balanced_data, aes(x = day_of_week , fill = y)) +
geom_bar(stat='count', position='dodge')
jj

#\\\\\\
pic_month <-ggplot(balanced_data, aes(x=month)) + geom_histogram(aes(y=(..count..)), stat='count', fill="darkseagreen4", alpha=0.5) + theme_minimal() +
theme(plot.title = element_text(face = "bold", size = 14, hjust = 0.5),
axis.text.x = element_text(angle = 45, hjust = 1, size=10),
axis.text.y = element_text(size=10)) +
labs(title = "Month",
x="Months", y="Counts")
## Warning: Ignoring unknown parameters: binwidth, bins, pad
pic_month

kk<-ggplot(balanced_data, aes(x = month , fill = y)) +
geom_bar(stat='count', position='dodge')
kk

#\\\\\\
#response variable
pic_y <-ggplot(balanced_data, aes(x=y)) + geom_histogram(aes(y=(..count..)), stat='count', fill="red", alpha=0.5) + theme_minimal() +
theme(plot.title = element_text(face = "bold", size = 14, hjust = 0.5),
axis.text.x = element_text(angle = 45, hjust = 1, size=10),
axis.text.y = element_text(size=10)) +
labs(title = "Subscribe or not",
x="Subscription", y="Counts")
## Warning: Ignoring unknown parameters: binwidth, bins, pad
pic_y

CrossTable(balanced_data$y)
##
##
## Cell Contents
## |-------------------------|
## | N |
## | N / Table Total |
## |-------------------------|
##
##
## Total Observations in Table: 34370
##
##
## | 0 | 1 |
## |-----------|-----------|
## | 17253 | 17117 |
## | 0.502 | 0.498 |
## |-----------|-----------|
##
##
##
##
#numerical variables exploration
p_age <- ggplot(balanced_data, aes(y, age)) + geom_boxplot(aes(fill = y))
hist(balanced_data$age, col = "yellow2", freq = FALSE)
abline(v = mean(balanced_data$age),
col = "royalblue",
lwd = 2)
abline(v = median(balanced_data$age),
col = "light pink",
lwd = 2)
legend(x = "topright",
c("Density plot", "Mean", "Median"),
col = c("yellow2", "royalblue", "light pink"),
lwd = c(2, 2, 2))

#The distribution shows that most customers oberved are less than 40 years old.
p_campaign <- ggplot(balanced_data, aes(y, campaign)) + geom_boxplot(aes(fill = y))
p_pdays <- ggplot(balanced_data, aes(y, pdays)) + geom_boxplot(aes(fill = y))
p_pdays

p_previous <- ggplot(balanced_data, aes(y, previous)) + geom_boxplot(aes(fill = y))
p_previous

p_emp.var.rate <- ggplot(balanced_data, aes(y, emp.var.rate)) + geom_boxplot(aes(fill = y))
p_cons.price.idx <- ggplot(balanced_data, aes(y, cons.price.idx)) + geom_boxplot(aes(fill = y))
p_cons.conf.idx<- ggplot(balanced_data, aes(y, cons.conf.idx)) + geom_boxplot(aes(fill = y))
p_euribor3m<- ggplot(balanced_data, aes(y, euribor3m)) + geom_boxplot(aes(fill = y))
p_nr.employed<- ggplot(balanced_data, aes(y, nr.employed)) + geom_boxplot(aes(fill = y))
a <- c(p_age,p_campaign,p_pdays)
ggarrange(p_age,p_campaign,
nrow = 1)

b <- c(p_previous,p_emp.var.rate,
p_cons.price.idx)
ggarrange(p_previous,p_emp.var.rate,
p_cons.price.idx,
nrow = 1)

g <- c(p_cons.conf.idx,
p_euribor3m,p_nr.employed)
ggarrange(p_cons.conf.idx,p_euribor3m,p_nr.employed,
nrow = 1)

numericdata <- subset(balanced_data, select=c("age", "campaign","previous","emp.var.rate","cons.price.idx","cons.conf.idx","euribor3m","nr.employed","pdays","previous"))
pairs(numericdata)

M <- cor(numericdata)
corrplot(M, method = "circle")

#or view in corr magnitudes
corrplot(M, method = "number")

#From the correlation plot, we can see that there are good correlations between 'cons.price.idx'&'emp.var.rate', 'cons.conf.idx'&'emp.var.rate',cons.conf.idx'&'cons.price.idx','cons.price.idx'&'nr.employed', cons.conf.idx'&'nr.employed','emp.var.rate'& nr.employed',nr.employed'& euribor3m.
#Those multicollinearity problems may not affect our predictions but indeed affect causal inferences.
#=============================================
#Data Split for Logistic Regression, CART, and Random Forest
set.seed(888)
index <- createDataPartition(balanced_data$y, p = 0.5, list = FALSE)
train_data <- balanced_data[index, ]
test_data <- balanced_data[-index, ]
#===========================================================
#Predictions
#Logistic Regression
## Feature selection: For logistic regression and neural nets, use 13 variables
modelk <- glm(y ~ ., data = balanced_data, family = binomial(link = 'logit'))
blr_step_aic_both(modelk)
## Stepwise Selection Method
## -------------------------
##
## Candidate Terms:
##
## 1 . age
## 2 . job
## 3 . marital
## 4 . education
## 5 . default
## 6 . housing
## 7 . loan
## 8 . contact
## 9 . month
## 10 . day_of_week
## 11 . campaign
## 12 . pdays
## 13 . previous
## 14 . poutcome
## 15 . emp.var.rate
## 16 . cons.price.idx
## 17 . cons.conf.idx
## 18 . euribor3m
## 19 . nr.employed
##
##
## Variables Entered/Removed:
##
## - nr.employed added
## - month added
## - poutcome added
## - emp.var.rate added
## - contact added
## - cons.conf.idx added
## - job added
## - euribor3m added
## - day_of_week added
## - default added
## - education added
## - previous added
## - campaign added
## - housing added
## - marital added
##
## No more variables to be added or removed.
##
##
## Stepwise Summary
## ----------------------------------------------------------------
## Variable Method AIC BIC Deviance
## ----------------------------------------------------------------
## nr.employed addition 42303.598 42320.488 42299.598
## month addition 40550.587 40643.482 40528.587
## poutcome addition 39938.667 40048.451 39912.667
## emp.var.rate addition 39454.351 39572.581 39426.351
## contact addition 39315.247 39441.921 39285.247
## cons.conf.idx addition 39232.783 39367.902 39200.783
## job addition 39160.690 39380.258 39108.690
## euribor3m addition 39096.318 39324.331 39042.318
## day_of_week addition 39036.811 39298.604 38974.811
## default addition 38994.654 39273.337 38928.654
## education addition 38963.255 39292.608 38885.255
## previous addition 38959.217 39297.014 38879.217
## campaign addition 38955.568 39301.811 38873.568
## housing addition 38951.955 39315.087 38865.955
## marital addition 38950.828 39330.850 38860.828
## ----------------------------------------------------------------
modelk %>% blr_step_aic_both() %>%plot()
## Stepwise Selection Method
## -------------------------
##
## Candidate Terms:
##
## 1 . age
## 2 . job
## 3 . marital
## 4 . education
## 5 . default
## 6 . housing
## 7 . loan
## 8 . contact
## 9 . month
## 10 . day_of_week
## 11 . campaign
## 12 . pdays
## 13 . previous
## 14 . poutcome
## 15 . emp.var.rate
## 16 . cons.price.idx
## 17 . cons.conf.idx
## 18 . euribor3m
## 19 . nr.employed
##
##
## Variables Entered/Removed:
##
## - nr.employed added
## - month added
## - poutcome added
## - emp.var.rate added
## - contact added
## - cons.conf.idx added
## - job added
## - euribor3m added
## - day_of_week added
## - default added
## - education added
## - previous added
## - campaign added
## - housing added
## - marital added
##
## No more variables to be added or removed.

subsettrain<-c("y","nr.employed","month","poutcome","emp.var.rate","job","contact","cons.conf.idx","euribor3m","day_of_week","default","marital","education","housing","age")
train_lognn <-train_data[subsettrain]
subsettest<-c("y","nr.employed","month","poutcome","emp.var.rate","job","contact","cons.conf.idx","euribor3m","day_of_week","default","marital","education","housing","age")
test_lognn<-test_data[subsettest]
set.seed(888)
logit_model <- glm(y ~.,family=binomial(link='logit'),data =train_lognn)
summary(logit_model)
##
## Call:
## glm(formula = y ~ ., family = binomial(link = "logit"), data = train_lognn)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -3.0569 -0.9234 -0.5184 0.9164 2.1376
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 2.163e+01 1.986e+00 10.890 < 2e-16 ***
## nr.employed -3.907e-03 3.907e-04 -10.000 < 2e-16 ***
## monthaug -4.492e-01 9.860e-02 -4.555 5.23e-06 ***
## monthdec 1.140e+00 3.835e-01 2.973 0.002946 **
## monthjul 9.120e-02 8.514e-02 1.071 0.284092
## monthjun 1.311e-01 8.248e-02 1.589 0.111993
## monthmar 1.317e+00 1.606e-01 8.205 2.30e-16 ***
## monthmay -6.927e-01 6.867e-02 -10.087 < 2e-16 ***
## monthnov -4.975e-01 8.572e-02 -5.804 6.48e-09 ***
## monthoct 2.127e+00 2.329e-01 9.133 < 2e-16 ***
## monthsep -2.447e-01 1.611e-01 -1.519 0.128657
## poutcomenonexistent 4.919e-01 6.145e-02 8.005 1.20e-15 ***
## poutcomesuccess 1.922e+00 1.298e-01 14.807 < 2e-16 ***
## emp.var.rate -1.283e-01 1.905e-02 -6.739 1.60e-11 ***
## jobblue-collar -6.148e-02 6.621e-02 -0.928 0.353151
## jobentrepreneur 7.651e-02 9.990e-02 0.766 0.443781
## jobhousemaid 8.607e-02 1.291e-01 0.667 0.505075
## jobmanagement -1.029e-01 7.387e-02 -1.393 0.163615
## jobretired 2.854e-01 1.062e-01 2.688 0.007193 **
## jobself-employed 7.674e-03 9.772e-02 0.079 0.937403
## jobservices -8.800e-02 7.180e-02 -1.226 0.220352
## jobstudent 2.705e-01 1.262e-01 2.144 0.032025 *
## jobtechnician -5.049e-02 6.067e-02 -0.832 0.405269
## jobunemployed -1.063e-01 1.137e-01 -0.935 0.349570
## contacttelephone -5.560e-01 6.028e-02 -9.224 < 2e-16 ***
## cons.conf.idx 3.533e-02 4.825e-03 7.323 2.42e-13 ***
## euribor3m -1.299e-01 1.861e-02 -6.980 2.94e-12 ***
## day_of_weekmon -2.031e-01 5.665e-02 -3.586 0.000336 ***
## day_of_weekthu 3.870e-02 5.592e-02 0.692 0.488849
## day_of_weektue -2.467e-02 5.735e-02 -0.430 0.667128
## day_of_weekwed 5.614e-02 5.642e-02 0.995 0.319641
## defaultrefuse2disclose -2.199e-01 5.004e-02 -4.395 1.11e-05 ***
## defaultyes -9.872e+00 1.195e+02 -0.083 0.934140
## maritalmarried 5.248e-02 5.851e-02 0.897 0.369771
## maritalsingle 1.246e-01 6.531e-02 1.908 0.056352 .
## educationbasic.6y 3.173e-01 9.626e-02 3.297 0.000979 ***
## educationbasic.9y 8.142e-03 7.831e-02 0.104 0.917192
## educationhigh.school 1.619e-01 8.093e-02 2.001 0.045391 *
## educationilliterate 1.143e+00 7.477e-01 1.528 0.126463
## educationprofessional.course 1.509e-01 8.880e-02 1.699 0.089256 .
## educationuniversity.degree 2.113e-01 8.193e-02 2.579 0.009906 **
## housingrefuse2disclose -2.425e-01 1.236e-01 -1.962 0.049779 *
## housingyes -1.056e-01 3.570e-02 -2.958 0.003092 **
## age 2.754e-03 1.922e-03 1.433 0.151986
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 23825 on 17185 degrees of freedom
## Residual deviance: 19310 on 17142 degrees of freedom
## AIC: 19398
##
## Number of Fisher Scoring iterations: 9
anova(logit_model, test="Chisq")
## Analysis of Deviance Table
##
## Model: binomial, link: logit
##
## Response: y
##
## Terms added sequentially (first to last)
##
##
## Df Deviance Resid. Df Resid. Dev Pr(>Chi)
## NULL 17185 23825
## nr.employed 1 2708.42 17184 21116 < 2.2e-16 ***
## month 9 930.93 17175 20185 < 2.2e-16 ***
## poutcome 2 313.37 17173 19872 < 2.2e-16 ***
## emp.var.rate 1 263.29 17172 19609 < 2.2e-16 ***
## job 10 36.83 17162 19572 6.067e-05 ***
## contact 1 70.48 17161 19501 < 2.2e-16 ***
## cons.conf.idx 1 46.69 17160 19455 8.301e-12 ***
## euribor3m 1 53.31 17159 19401 2.844e-13 ***
## day_of_week 4 30.44 17155 19371 3.975e-06 ***
## default 2 21.71 17153 19349 1.927e-05 ***
## marital 2 3.80 17151 19345 0.149220
## education 6 21.98 17145 19323 0.001220 **
## housing 2 10.97 17143 19312 0.004148 **
## age 1 2.05 17142 19310 0.151910
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#variable importance
km<-varImp(logit_model)
library(data.table)
##
## Attaching package: 'data.table'
## The following object is masked from 'package:purrr':
##
## transpose
## The following objects are masked from 'package:dplyr':
##
## between, first, last
setDT(km, keep.rownames = TRUE)[]
## rn Overall
## 1: nr.employed 9.99968850
## 2: monthaug 4.55542864
## 3: monthdec 2.97335774
## 4: monthjul 1.07117311
## 5: monthjun 1.58929922
## 6: monthmar 8.20521908
## 7: monthmay 10.08715780
## 8: monthnov 5.80384830
## 9: monthoct 9.13266431
## 10: monthsep 1.51941852
## 11: poutcomenonexistent 8.00452506
## 12: poutcomesuccess 14.80701963
## 13: emp.var.rate 6.73857473
## 14: jobblue-collar 0.92849518
## 15: jobentrepreneur 0.76582475
## 16: jobhousemaid 0.66652650
## 17: jobmanagement 1.39301448
## 18: jobretired 2.68779563
## 19: jobself-employed 0.07853391
## 20: jobservices 1.22559294
## 21: jobstudent 2.14410048
## 22: jobtechnician 0.83224752
## 23: jobunemployed 0.93542305
## 24: contacttelephone 9.22433057
## 25: cons.conf.idx 7.32323678
## 26: euribor3m 6.98042679
## 27: day_of_weekmon 3.58554069
## 28: day_of_weekthu 0.69214099
## 29: day_of_weektue 0.43009319
## 30: day_of_weekwed 0.99519672
## 31: defaultrefuse2disclose 4.39459091
## 32: defaultyes 0.08263706
## 33: maritalmarried 0.89690227
## 34: maritalsingle 1.90830303
## 35: educationbasic.6y 3.29660481
## 36: educationbasic.9y 0.10397109
## 37: educationhigh.school 2.00101619
## 38: educationilliterate 1.52820073
## 39: educationprofessional.course 1.69933324
## 40: educationuniversity.degree 2.57909182
## 41: housingrefuse2disclose 1.96185626
## 42: housingyes 2.95843720
## 43: age 1.43255119
## rn Overall
colnames(km)[2]<-"Importance"
colnames(km)[1]<-"Variables"
km %>%
arrange(Importance) %>% # First sort by val. This sort the dataframe but NOT the factor levels
mutate(name=fct_reorder(Variables, desc(Importance))) %>% # This trick update the factor levels
ggplot( aes(x=Variables, y=Importance)) +
geom_segment( aes(xend=name, yend=0)) +
geom_point( size=4, color="orange") +
coord_flip() +
theme_bw() +
xlab("")

#confusion matrix for train
log.pred.train <-predict(logit_model,data=train_lognn,type="response")
log.pred1.train <-ifelse(log.pred.train>0.5,1,0)
log.confusion.matrix.train <-table(log.pred1.train,train_lognn$y)
log.confusion.matrix.train
##
## log.pred1.train 0 1
## 0 7008 3249
## 1 1619 5310
log.accuracy.train=sum(diag(log.confusion.matrix.train))/sum(log.confusion.matrix.train)
log.accuracy.train
## [1] 0.7167462
#confusion matrix for test
log.pred.test <-predict(logit_model,data=test_lognn,type="response")
log.pred1.test <-ifelse(log.pred.test>0.5,1,0)
error1 <-mean(log.pred1.test !=test_lognn$y)
## Warning in `!=.default`(log.pred1.test, test_lognn$y): longer object length
## is not a multiple of shorter object length
## Warning in is.na(e1) | is.na(e2): longer object length is not a multiple of
## shorter object length
print(paste('Accuracy',1-error1))
## [1] "Accuracy 0.716571628069359"
###CART
set.seed(888)
tree_model <- rpart(y ~ ., data = train_data,method="class")
tree_model
## n= 17186
##
## node), split, n, loss, yval, (yprob)
## * denotes terminal node
##
## 1) root 17186 8559 0 (0.50197835 0.49802165)
## 2) pdays< 0.08737967 13676 5256 0 (0.61567710 0.38432290)
## 4) pdays>=-0.08416085 11296 3018 0 (0.73282578 0.26717422)
## 8) euribor3m>=3.354868 7063 1075 0 (0.84779839 0.15220161) *
## 9) euribor3m< 3.354868 4233 1943 0 (0.54098748 0.45901252)
## 18) nr.employed>=5054.815 3158 1184 0 (0.62507916 0.37492084) *
## 19) nr.employed< 5054.815 1075 316 1 (0.29395349 0.70604651) *
## 5) pdays< -0.08416085 2380 142 1 (0.05966387 0.94033613) *
## 3) pdays>=0.08737967 3510 207 1 (0.05897436 0.94102564) *
fancyRpartPlot(tree_model)

#predict train
predictions <- predict(tree_model, train_data, type = "class")
#confusion matrix train
tree.confusion.matrix.train <- prop.table(table(predictions, train_data$y))
tree.confusion.matrix.train
##
## predictions 0 1
## 0 0.46328407 0.13144420
## 1 0.03869429 0.36657745
CrossTable(train_data$y, predictions,
prop.chisq = FALSE, prop.c = FALSE, prop.r = FALSE,
dnn = c('actual subscription status', 'predicted subscription status'))
##
##
## Cell Contents
## |-------------------------|
## | N |
## | N / Table Total |
## |-------------------------|
##
##
## Total Observations in Table: 17186
##
##
## | predicted subscription status
## actual subscription status | 0 | 1 | Row Total |
## ---------------------------|-----------|-----------|-----------|
## 0 | 7962 | 665 | 8627 |
## | 0.463 | 0.039 | |
## ---------------------------|-----------|-----------|-----------|
## 1 | 2259 | 6300 | 8559 |
## | 0.131 | 0.367 | |
## ---------------------------|-----------|-----------|-----------|
## Column Total | 10221 | 6965 | 17186 |
## ---------------------------|-----------|-----------|-----------|
##
##
#train accuracy
tree.accuracy.train=sum(diag(tree.confusion.matrix.train))/sum(tree.confusion.matrix.train)
tree.accuracy.train
## [1] 0.8298615
#predict test
cart_pred <- predict(tree_model , test_data,type="class")
# Confusion matrix for test
tree.confusion.matrix.test <- prop.table(table(cart_pred, test_data$y))
tree.confusion.matrix.test
##
## cart_pred 0 1
## 0 0.46211592 0.13844274
## 1 0.03986266 0.35957868
#test accuracy
tree.accuracy.test=sum(diag(tree.confusion.matrix.test))/sum(tree.confusion.matrix.test)
tree.accuracy.test
## [1] 0.8216946
# Cross table validation for test
CrossTable(test_data$y, cart_pred,
prop.chisq = FALSE, prop.c = FALSE, prop.r = FALSE,
dnn = c('actual customers responses', 'predicted customers responses'))
##
##
## Cell Contents
## |-------------------------|
## | N |
## | N / Table Total |
## |-------------------------|
##
##
## Total Observations in Table: 17184
##
##
## | predicted customers responses
## actual customers responses | 0 | 1 | Row Total |
## ---------------------------|-----------|-----------|-----------|
## 0 | 7941 | 685 | 8626 |
## | 0.462 | 0.040 | |
## ---------------------------|-----------|-----------|-----------|
## 1 | 2379 | 6179 | 8558 |
## | 0.138 | 0.360 | |
## ---------------------------|-----------|-----------|-----------|
## Column Total | 10320 | 6864 | 17184 |
## ---------------------------|-----------|-----------|-----------|
##
##
##prune tree
set.seed(888)
printcp(tree_model)
##
## Classification tree:
## rpart(formula = y ~ ., data = train_data, method = "class")
##
## Variables actually used in tree construction:
## [1] euribor3m nr.employed pdays
##
## Root node error: 8559/17186 = 0.49802
##
## n= 17186
##
## CP nsplit rel error xerror xstd
## 1 0.361725 0 1.00000 1.00000 0.0076583
## 2 0.244888 1 0.63828 0.63792 0.0071312
## 3 0.025879 2 0.39339 0.39514 0.0060895
## 4 0.010000 4 0.34163 0.34245 0.0057608
plotcp(tree_model)

tree_model$cptable[which.min(tree_model$cptable[,"xerror"]),"CP"]
## [1] 0.01
bestcp <- tree_model$cptable[which.min(tree_model$cptable[,"xerror"]),"CP"]
tree.pruned <- prune(tree_model, cp = bestcp)
fancyRpartPlot(tree.pruned)

summary(tree.pruned)
## Call:
## rpart(formula = y ~ ., data = train_data, method = "class")
## n= 17186
##
## CP nsplit rel error xerror xstd
## 1 0.36172450 0 1.0000000 1.0000000 0.007658275
## 2 0.24488842 1 0.6382755 0.6379250 0.007131171
## 3 0.02587919 2 0.3933871 0.3951396 0.006089461
## 4 0.01000000 4 0.3416287 0.3424465 0.005760777
##
## Variable importance
## pdays nr.employed poutcome euribor3m emp.var.rate
## 54 9 9 8 7
## cons.price.idx cons.conf.idx month previous
## 5 4 3 1
##
## Node number 1: 17186 observations, complexity param=0.3617245
## predicted class=0 expected loss=0.4980216 P(node) =1
## class counts: 8627 8559
## probabilities: 0.502 0.498
## left son=2 (13676 obs) right son=3 (3510 obs)
## Primary splits:
## pdays < 0.08737967 to the left, improve=1731.2830, (0 missing)
## euribor3m < 3.301685 to the right, improve=1362.9070, (0 missing)
## nr.employed < 5159.954 to the right, improve=1257.1140, (0 missing)
## emp.var.rate < -0.4153285 to the right, improve=1186.8380, (0 missing)
## month splits as RLRLLRLLRR, improve= 655.5931, (0 missing)
## Surrogate splits:
## poutcome splits as LLR, agree=0.862, adj=0.326, (0 split)
## previous < 1.160638 to the left, agree=0.801, adj=0.027, (0 split)
## emp.var.rate < -4.180714 to the right, agree=0.797, adj=0.004, (0 split)
## nr.employed < 4904.317 to the right, agree=0.796, adj=0.002, (0 split)
## cons.conf.idx < -27.60867 to the left, agree=0.796, adj=0.002, (0 split)
##
## Node number 2: 13676 observations, complexity param=0.2448884
## predicted class=0 expected loss=0.3843229 P(node) =0.795764
## class counts: 8420 5256
## probabilities: 0.616 0.384
## left son=4 (11296 obs) right son=5 (2380 obs)
## Primary splits:
## pdays < -0.08416085 to the right, improve=1781.6060, (0 missing)
## euribor3m < 3.243719 to the right, improve= 814.4408, (0 missing)
## nr.employed < 5151.223 to the right, improve= 747.7505, (0 missing)
## emp.var.rate < -0.4251875 to the right, improve= 725.9074, (0 missing)
## month splits as RLRLLRLLRR, improve= 476.8494, (0 missing)
## Surrogate splits:
## cons.price.idx < 95.14196 to the left, agree=0.826, adj=0.003, (0 split)
## euribor3m < 7.180609 to the left, agree=0.826, adj=0.002, (0 split)
## previous < 1.416851 to the left, agree=0.826, adj=0.001, (0 split)
## nr.employed < 5338.901 to the left, agree=0.826, adj=0.001, (0 split)
## age < 9.482672 to the right, agree=0.826, adj=0.001, (0 split)
##
## Node number 3: 3510 observations
## predicted class=1 expected loss=0.05897436 P(node) =0.204236
## class counts: 207 3303
## probabilities: 0.059 0.941
##
## Node number 4: 11296 observations, complexity param=0.02587919
## predicted class=0 expected loss=0.2671742 P(node) =0.6572792
## class counts: 8278 3018
## probabilities: 0.733 0.267
## left son=8 (7063 obs) right son=9 (4233 obs)
## Primary splits:
## euribor3m < 3.354868 to the right, improve=498.2925, (0 missing)
## nr.employed < 5063.45 to the right, improve=481.6256, (0 missing)
## emp.var.rate < -0.4153285 to the right, improve=444.1400, (0 missing)
## month splits as RLRLLRLLRR, improve=343.2295, (0 missing)
## contact splits as RL, improve=167.5603, (0 missing)
## Surrogate splits:
## nr.employed < 5147.75 to the right, agree=0.950, adj=0.867, (0 split)
## emp.var.rate < -0.6097237 to the right, agree=0.948, adj=0.861, (0 split)
## cons.price.idx < 93.18318 to the right, agree=0.832, adj=0.551, (0 split)
## cons.conf.idx < -44.74206 to the right, agree=0.790, adj=0.440, (0 split)
## month splits as RLRLLRLLRR, agree=0.746, adj=0.321, (0 split)
##
## Node number 5: 2380 observations
## predicted class=1 expected loss=0.05966387 P(node) =0.1384848
## class counts: 142 2238
## probabilities: 0.060 0.940
##
## Node number 8: 7063 observations
## predicted class=0 expected loss=0.1522016 P(node) =0.410974
## class counts: 5988 1075
## probabilities: 0.848 0.152
##
## Node number 9: 4233 observations, complexity param=0.02587919
## predicted class=0 expected loss=0.4590125 P(node) =0.2463051
## class counts: 2290 1943
## probabilities: 0.541 0.459
## left son=18 (3158 obs) right son=19 (1075 obs)
## Primary splits:
## nr.employed < 5054.815 to the right, improve=175.86850, (0 missing)
## month splits as LRRRRRLLRR, improve=172.38340, (0 missing)
## cons.conf.idx < -42.51436 to the left, improve=130.53500, (0 missing)
## cons.price.idx < 93.34726 to the left, improve= 82.87013, (0 missing)
## job splits as RLLRLRRLRRR, improve= 69.75490, (0 missing)
## Surrogate splits:
## cons.price.idx < 93.58645 to the left, agree=0.822, adj=0.299, (0 split)
## month splits as LLRRLLLLRR, agree=0.802, adj=0.219, (0 split)
## cons.conf.idx < -39.36025 to the left, agree=0.790, adj=0.175, (0 split)
## euribor3m < -0.06928759 to the right, agree=0.756, adj=0.040, (0 split)
## age < 63.35893 to the left, agree=0.748, adj=0.009, (0 split)
##
## Node number 18: 3158 observations
## predicted class=0 expected loss=0.3749208 P(node) =0.1837542
## class counts: 1974 1184
## probabilities: 0.625 0.375
##
## Node number 19: 1075 observations
## predicted class=1 expected loss=0.2939535 P(node) =0.06255091
## class counts: 316 759
## probabilities: 0.294 0.706
#variable importance
argPlot <- as.data.frame(tree.pruned$variable.importance)
df <- data.frame(imp = tree.pruned$variable.importance)
df2 <- df %>%
tibble::rownames_to_column() %>%
dplyr::rename("variable" = rowname) %>%
dplyr::arrange(imp) %>%
dplyr::mutate(variable = forcats::fct_inorder(variable))
ggplot2::ggplot(df2) +
geom_segment(aes(x = variable, y = 0, xend = variable, yend = imp),
size = 1.5, alpha = 0.7) +
geom_point(aes(x = variable, y = imp, col = variable),
size = 4, show.legend = F) +
coord_flip() + labs(x="Variables",y="Importance")+
theme_bw()

# Compute the train accuracy of the pruned tree
train_data$pred <- predict(tree.pruned, train_data, type = "class")
accuracy_prun_train <- mean(train_data$pred == train_data$y)
accuracy_prun_train
## [1] 0.8298615
pruned.confusion.matrix.train <- prop.table(table(train_data$pred, train_data$y))
pruned.confusion.matrix.train
##
## 0 1
## 0 0.46328407 0.13144420
## 1 0.03869429 0.36657745
# Compute the test accuracy of the pruned tree
test_data$pred <- predict(tree.pruned, test_data, type = "class")
accuracy_prune_test <- mean(test_data$pred== test_data$y)
accuracy_prune_test
## [1] 0.8216946
pruned.confusion.matrix.test <- prop.table(table(test_data$pred, test_data$y))
pruned.confusion.matrix.test
##
## 0 1
## 0 0.46211592 0.13844274
## 1 0.03986266 0.35957868
#The tree after being pruned is the same as before
#=============================================================
#Random Forest
library(randomForest)
## randomForest 4.6-14
## Type rfNews() to see new features/changes/bug fixes.
##
## Attaching package: 'randomForest'
## The following object is masked from 'package:rattle':
##
## importance
## The following object is masked from 'package:gridExtra':
##
## combine
## The following object is masked from 'package:ggplot2':
##
## margin
## The following object is masked from 'package:dplyr':
##
## combine
set.seed(888)
RF.model <- randomForest(y~., data=train_data, ntree=100, importance=TRUE)
RF.model
##
## Call:
## randomForest(formula = y ~ ., data = train_data, ntree = 100, importance = TRUE)
## Type of random forest: classification
## Number of trees: 100
## No. of variables tried at each split: 4
##
## OOB estimate of error rate: 13.03%
## Confusion matrix:
## 0 1 class.error
## 0 7667 960 0.1112785
## 1 1279 7280 0.1494333
summary(RF.model)
## Length Class Mode
## call 5 -none- call
## type 1 -none- character
## predicted 17186 factor numeric
## err.rate 300 -none- numeric
## confusion 6 -none- numeric
## votes 34372 matrix numeric
## oob.times 17186 -none- numeric
## classes 2 -none- character
## importance 80 -none- numeric
## importanceSD 60 -none- numeric
## localImportance 0 -none- NULL
## proximity 0 -none- NULL
## ntree 1 -none- numeric
## mtry 1 -none- numeric
## forest 14 -none- list
## y 17186 factor numeric
## test 0 -none- NULL
## inbag 0 -none- NULL
## terms 3 terms call
#variable importance
varImpPlot(RF.model)

#Next we display an error plot of the random forest model:
plot(RF.model)

#train
RF.predict.train <- predict(RF.model, newdata = train_data)
RF.train.cm <- as.matrix(table(Actual1 = train_data$y, Predicted1 = RF.predict.train))
RF.train.cm
## Predicted1
## Actual1 0 1
## 0 8627 0
## 1 0 8559
accuracy_train_rf=sum(diag(RF.train.cm))/sum(RF.train.cm)
accuracy_train_rf
## [1] 1
#test
RF.predict <- predict(RF.model, newdata = test_data)
RF.cm <- as.matrix(table(Actual = test_data$y, Predicted = RF.predict))
RF.cm
## Predicted
## Actual 0 1
## 0 7686 940
## 1 1343 7215
accuracy_test_rf=sum(diag(RF.cm))/sum(RF.cm)
accuracy_test_rf
## [1] 0.8671439
#Below we test the accuracy on the training and test datasets and we see that it is 90.87% and 83.45%, respectively.
#The “out of sample” error is 16.51% and is in agreement with the OOB error:
#library(randomForestExplainer)
#explain_forest(RF.model, interactions = TRUE, data = test_data)
#=============================================
#==============================================================
#neural nets
library(nnet)
library(NeuralNetTools)
library(neuralnet)
##
## Attaching package: 'neuralnet'
## The following object is masked from 'package:ROCR':
##
## prediction
## The following object is masked from 'package:dplyr':
##
## compute
## For neural nets, use -- variables(Feature selection step)
#I don't inclue "y" variable,
#because I dont want to make it split into 2 column y0 and y1 in
#in one-hot-encoding
subsetnn <- subset(balanced_data, select=c("nr.employed","month","poutcome","emp.var.rate","job",
"contact","cons.conf.idx","euribor3m","day_of_week",
"default","marital","education","housing"))
subset_y <- balanced_data$y
#Use of one-hot-encoding to transfer categorical variables into numerical variables
#Since I want to do data scaling before applying nn,
#and it requires numerical variables
dmy <- dummyVars(" ~ .", data = subsetnn)
bank.dummies<- data.frame(predict(dmy, newdata = subsetnn))
## Scale data for neural network
max = apply(bank.dummies , 2 , max)
min = apply(bank.dummies, 2 , min)
scaled = as.data.frame(scale(bank.dummies, center = min, scale = max - min))
#add back the y variable back to bank.dummies
scaled$y <- as.factor(subset_y)
##data_split
idx <- sample(1:dim(scaled)[1], dim(scaled)[1]/2)
trainNN = scaled[idx , ]
testNN = scaled[-idx , ]
#model fit
set.seed(888)
nn <- train(y ~ .,
data = trainNN,
method = "nnet")
## # weights: 54
## initial value 12590.380546
## iter 10 value 11264.857943
## iter 20 value 11041.077597
## iter 30 value 10359.862778
## iter 40 value 9850.000630
## iter 50 value 9721.984879
## iter 60 value 9687.141551
## iter 70 value 9664.154578
## iter 80 value 9656.488049
## iter 90 value 9639.242090
## iter 100 value 9632.834174
## final value 9632.834174
## stopped after 100 iterations
## # weights: 160
## initial value 14073.263671
## iter 10 value 11740.846972
## iter 20 value 10885.132441
## iter 30 value 10273.067836
## iter 40 value 9855.307796
## iter 50 value 9622.578266
## iter 60 value 9554.058708
## iter 70 value 9512.528619
## iter 80 value 9485.976982
## iter 90 value 9458.580865
## iter 100 value 9440.308004
## final value 9440.308004
## stopped after 100 iterations
## # weights: 266
## initial value 12659.678671
## iter 10 value 10143.678562
## iter 20 value 9593.716770
## iter 30 value 9356.987274
## iter 40 value 9242.785893
## iter 50 value 9158.553435
## iter 60 value 8979.444685
## iter 70 value 8875.674758
## iter 80 value 8813.938814
## iter 90 value 8795.827353
## iter 100 value 8780.929956
## final value 8780.929956
## stopped after 100 iterations
## # weights: 54
## initial value 13217.006601
## iter 10 value 11364.283946
## iter 20 value 10665.854091
## iter 30 value 10236.836466
## iter 40 value 9844.985366
## iter 50 value 9723.062115
## iter 60 value 9633.946478
## iter 70 value 9609.048814
## iter 80 value 9606.438368
## iter 90 value 9603.811271
## iter 100 value 9602.589001
## final value 9602.589001
## stopped after 100 iterations
## # weights: 160
## initial value 12571.296162
## iter 10 value 10308.252732
## iter 20 value 9607.555319
## iter 30 value 9485.259317
## iter 40 value 9402.226779
## iter 50 value 9362.502165
## iter 60 value 9324.247164
## iter 70 value 9288.203249
## iter 80 value 9244.708854
## iter 90 value 9197.215892
## iter 100 value 9167.596673
## final value 9167.596673
## stopped after 100 iterations
## # weights: 266
## initial value 12506.167296
## iter 10 value 9868.061295
## iter 20 value 9558.152157
## iter 30 value 9385.529124
## iter 40 value 9207.001383
## iter 50 value 9028.406111
## iter 60 value 8949.502669
## iter 70 value 8907.814721
## iter 80 value 8881.115086
## iter 90 value 8859.900935
## iter 100 value 8851.333062
## final value 8851.333062
## stopped after 100 iterations
## # weights: 54
## initial value 12146.127603
## iter 10 value 10964.552870
## iter 20 value 10003.248276
## iter 30 value 9737.521076
## iter 40 value 9679.484983
## iter 50 value 9654.619079
## iter 60 value 9651.885181
## iter 70 value 9649.088527
## iter 80 value 9628.794814
## iter 90 value 9595.852334
## iter 100 value 9593.655716
## final value 9593.655716
## stopped after 100 iterations
## # weights: 160
## initial value 12149.623819
## iter 10 value 10020.240126
## iter 20 value 9560.859036
## iter 30 value 9422.885860
## iter 40 value 9311.549959
## iter 50 value 9159.867166
## iter 60 value 9099.287568
## iter 70 value 9019.425480
## iter 80 value 8980.420634
## iter 90 value 8957.288421
## iter 100 value 8932.545740
## final value 8932.545740
## stopped after 100 iterations
## # weights: 266
## initial value 15970.396828
## iter 10 value 9890.786306
## iter 20 value 9469.353687
## iter 30 value 9221.075246
## iter 40 value 9005.781520
## iter 50 value 8901.831384
## iter 60 value 8841.329316
## iter 70 value 8798.358554
## iter 80 value 8741.468566
## iter 90 value 8702.617383
## iter 100 value 8680.887254
## final value 8680.887254
## stopped after 100 iterations
## # weights: 54
## initial value 12934.900682
## iter 10 value 11040.250904
## iter 20 value 10106.077271
## iter 30 value 9975.097015
## iter 40 value 9924.416560
## iter 50 value 9914.821730
## iter 60 value 9909.908826
## iter 70 value 9909.858530
## final value 9909.854466
## converged
## # weights: 160
## initial value 12221.020990
## iter 10 value 10159.917390
## iter 20 value 9810.553124
## iter 30 value 9545.370396
## iter 40 value 9445.721143
## iter 50 value 9361.486312
## iter 60 value 9327.007007
## iter 70 value 9298.661911
## iter 80 value 9279.207999
## iter 90 value 9256.534284
## iter 100 value 9231.607150
## final value 9231.607150
## stopped after 100 iterations
## # weights: 266
## initial value 12177.758501
## iter 10 value 10210.573947
## iter 20 value 9790.500876
## iter 30 value 9603.988559
## iter 40 value 9446.636816
## iter 50 value 9283.847067
## iter 60 value 9164.965353
## iter 70 value 9080.046226
## iter 80 value 9011.295954
## iter 90 value 8972.626776
## iter 100 value 8939.157359
## final value 8939.157359
## stopped after 100 iterations
## # weights: 54
## initial value 13015.315563
## iter 10 value 11129.168701
## iter 20 value 10330.016995
## iter 30 value 9959.029911
## iter 40 value 9850.334419
## iter 50 value 9818.962633
## iter 60 value 9744.415624
## iter 70 value 9707.952034
## iter 80 value 9680.302879
## iter 90 value 9671.227852
## iter 100 value 9665.972410
## final value 9665.972410
## stopped after 100 iterations
## # weights: 160
## initial value 15475.011868
## iter 10 value 10832.404134
## iter 20 value 9860.678605
## iter 30 value 9647.161253
## iter 40 value 9530.093918
## iter 50 value 9465.810354
## iter 60 value 9420.068109
## iter 70 value 9379.012371
## iter 80 value 9340.445830
## iter 90 value 9322.726042
## iter 100 value 9312.759270
## final value 9312.759270
## stopped after 100 iterations
## # weights: 266
## initial value 12046.790105
## iter 10 value 9760.175445
## iter 20 value 9500.819079
## iter 30 value 9390.258264
## iter 40 value 9225.066645
## iter 50 value 9148.888509
## iter 60 value 9094.594688
## iter 70 value 8996.909195
## iter 80 value 8895.818408
## iter 90 value 8826.746904
## iter 100 value 8797.141034
## final value 8797.141034
## stopped after 100 iterations
## # weights: 54
## initial value 11985.153117
## iter 10 value 10335.343086
## iter 20 value 10056.146596
## iter 30 value 9915.751039
## iter 40 value 9865.426977
## iter 50 value 9802.630298
## iter 60 value 9725.145271
## iter 70 value 9689.622188
## iter 80 value 9674.645820
## iter 90 value 9666.795750
## iter 100 value 9658.976334
## final value 9658.976334
## stopped after 100 iterations
## # weights: 160
## initial value 11863.080634
## iter 10 value 9899.957351
## iter 20 value 9712.134360
## iter 30 value 9614.072702
## iter 40 value 9534.289214
## iter 50 value 9478.638600
## iter 60 value 9439.118346
## iter 70 value 9349.015435
## iter 80 value 9272.594718
## iter 90 value 9225.301950
## iter 100 value 9193.342947
## final value 9193.342947
## stopped after 100 iterations
## # weights: 266
## initial value 12024.752522
## iter 10 value 9778.826596
## iter 20 value 9603.739403
## iter 30 value 9404.470765
## iter 40 value 9276.797657
## iter 50 value 9220.410439
## iter 60 value 9168.080895
## iter 70 value 9104.775051
## iter 80 value 9060.533056
## iter 90 value 9021.026449
## iter 100 value 8990.356866
## final value 8990.356866
## stopped after 100 iterations
## # weights: 54
## initial value 11921.885806
## iter 10 value 10695.205349
## iter 20 value 9875.824522
## iter 30 value 9677.190467
## iter 40 value 9622.766449
## iter 50 value 9614.461292
## iter 60 value 9611.977835
## iter 70 value 9611.964015
## final value 9611.962360
## converged
## # weights: 160
## initial value 12150.209663
## iter 10 value 10454.976822
## iter 20 value 9892.688926
## iter 30 value 9662.069717
## iter 40 value 9578.799661
## iter 50 value 9492.130802
## iter 60 value 9429.246736
## iter 70 value 9372.473618
## iter 80 value 9320.693064
## iter 90 value 9289.179994
## iter 100 value 9242.702082
## final value 9242.702082
## stopped after 100 iterations
## # weights: 266
## initial value 11778.406584
## iter 10 value 9839.808612
## iter 20 value 9450.998432
## iter 30 value 9229.351500
## iter 40 value 9126.968098
## iter 50 value 9027.169079
## iter 60 value 8946.847041
## iter 70 value 8901.219853
## iter 80 value 8837.813295
## iter 90 value 8785.309451
## iter 100 value 8725.226777
## final value 8725.226777
## stopped after 100 iterations
## # weights: 54
## initial value 11871.027323
## iter 10 value 10952.469278
## iter 20 value 10674.326246
## iter 30 value 10209.935719
## iter 40 value 9929.395186
## iter 50 value 9725.206998
## iter 60 value 9666.496292
## iter 70 value 9651.594210
## iter 80 value 9627.649037
## iter 90 value 9626.098585
## iter 100 value 9626.019587
## final value 9626.019587
## stopped after 100 iterations
## # weights: 160
## initial value 11954.611151
## iter 10 value 9947.460419
## iter 20 value 9672.944119
## iter 30 value 9560.781249
## iter 40 value 9430.903228
## iter 50 value 9378.728911
## iter 60 value 9357.668663
## iter 70 value 9344.345697
## iter 80 value 9337.653420
## iter 90 value 9327.641199
## iter 100 value 9315.711873
## final value 9315.711873
## stopped after 100 iterations
## # weights: 266
## initial value 12894.254138
## iter 10 value 9813.512151
## iter 20 value 9432.526590
## iter 30 value 9311.292807
## iter 40 value 9245.959156
## iter 50 value 9138.085754
## iter 60 value 9078.075677
## iter 70 value 9005.479534
## iter 80 value 8948.630257
## iter 90 value 8887.190460
## iter 100 value 8829.121233
## final value 8829.121233
## stopped after 100 iterations
## # weights: 54
## initial value 11902.002398
## iter 10 value 10661.487249
## iter 20 value 9907.308364
## iter 30 value 9753.539399
## iter 40 value 9681.866451
## iter 50 value 9665.569066
## iter 60 value 9665.449492
## final value 9665.433661
## converged
## # weights: 160
## initial value 14244.330666
## iter 10 value 11057.337817
## iter 20 value 9594.681360
## iter 30 value 9428.243630
## iter 40 value 9311.933072
## iter 50 value 9268.843270
## iter 60 value 9182.125911
## iter 70 value 9080.237291
## iter 80 value 9037.614763
## iter 90 value 9009.617881
## iter 100 value 8964.236851
## final value 8964.236851
## stopped after 100 iterations
## # weights: 266
## initial value 12013.980985
## iter 10 value 9854.827454
## iter 20 value 9437.342268
## iter 30 value 9171.649809
## iter 40 value 8960.957982
## iter 50 value 8742.063018
## iter 60 value 8609.362770
## iter 70 value 8570.690035
## iter 80 value 8543.458705
## iter 90 value 8524.723083
## iter 100 value 8505.907127
## final value 8505.907127
## stopped after 100 iterations
## # weights: 54
## initial value 12062.161751
## iter 10 value 11627.326069
## iter 20 value 11043.121483
## iter 30 value 10887.696637
## iter 40 value 10836.011991
## iter 50 value 10828.726005
## iter 60 value 10810.729860
## iter 70 value 10598.954198
## iter 80 value 10573.074650
## iter 90 value 10567.878183
## iter 100 value 10544.645733
## final value 10544.645733
## stopped after 100 iterations
## # weights: 160
## initial value 11793.745702
## iter 10 value 9880.523396
## iter 20 value 9628.733374
## iter 30 value 9451.188695
## iter 40 value 9341.225368
## iter 50 value 9248.585358
## iter 60 value 9182.150153
## iter 70 value 9159.636761
## iter 80 value 9141.606428
## iter 90 value 9083.833461
## iter 100 value 9022.292442
## final value 9022.292442
## stopped after 100 iterations
## # weights: 266
## initial value 12010.084032
## iter 10 value 9901.414799
## iter 20 value 9549.050392
## iter 30 value 9267.503759
## iter 40 value 9100.624702
## iter 50 value 8977.473187
## iter 60 value 8906.579339
## iter 70 value 8841.563184
## iter 80 value 8765.994825
## iter 90 value 8744.086189
## iter 100 value 8729.897099
## final value 8729.897099
## stopped after 100 iterations
## # weights: 54
## initial value 13437.775766
## iter 10 value 11914.969542
## iter 20 value 11010.299264
## iter 30 value 10162.900069
## iter 40 value 9956.877041
## iter 50 value 9889.028925
## iter 60 value 9817.042028
## iter 70 value 9684.426867
## iter 80 value 9637.904009
## iter 90 value 9625.589837
## iter 100 value 9613.102144
## final value 9613.102144
## stopped after 100 iterations
## # weights: 160
## initial value 12246.893646
## iter 10 value 9934.924077
## iter 20 value 9651.496412
## iter 30 value 9468.274924
## iter 40 value 9371.779577
## iter 50 value 9334.466359
## iter 60 value 9286.635379
## iter 70 value 9220.401758
## iter 80 value 9187.546313
## iter 90 value 9112.989861
## iter 100 value 9036.453010
## final value 9036.453010
## stopped after 100 iterations
## # weights: 266
## initial value 11800.218892
## iter 10 value 9762.785083
## iter 20 value 9518.072327
## iter 30 value 9363.440622
## iter 40 value 9258.606124
## iter 50 value 9133.150638
## iter 60 value 9007.795389
## iter 70 value 8843.019600
## iter 80 value 8769.846152
## iter 90 value 8743.038824
## iter 100 value 8725.363515
## final value 8725.363515
## stopped after 100 iterations
## # weights: 54
## initial value 12242.913873
## iter 10 value 10364.224244
## iter 20 value 10021.479125
## iter 30 value 9947.202871
## iter 40 value 9912.313491
## iter 50 value 9902.252242
## iter 60 value 9901.813225
## iter 70 value 9901.780233
## iter 80 value 9901.553126
## iter 90 value 9763.412774
## iter 100 value 9674.276146
## final value 9674.276146
## stopped after 100 iterations
## # weights: 160
## initial value 12748.997894
## iter 10 value 10841.204851
## iter 20 value 10260.469172
## iter 30 value 9760.918543
## iter 40 value 9689.167697
## iter 50 value 9664.006581
## iter 60 value 9657.502233
## iter 70 value 9654.719031
## iter 80 value 9649.665896
## iter 90 value 9632.324981
## iter 100 value 9629.902361
## final value 9629.902361
## stopped after 100 iterations
## # weights: 266
## initial value 12755.523220
## iter 10 value 9715.079011
## iter 20 value 9434.172080
## iter 30 value 9266.813228
## iter 40 value 9149.709467
## iter 50 value 8983.386098
## iter 60 value 8858.170352
## iter 70 value 8775.004825
## iter 80 value 8722.533953
## iter 90 value 8676.798970
## iter 100 value 8631.850468
## final value 8631.850468
## stopped after 100 iterations
## # weights: 54
## initial value 11917.929419
## iter 10 value 10505.809361
## iter 20 value 9872.428860
## iter 30 value 9753.890708
## iter 40 value 9724.498084
## iter 50 value 9716.113790
## iter 60 value 9711.942040
## iter 70 value 9706.938193
## iter 80 value 9692.283213
## iter 90 value 9674.663888
## iter 100 value 9664.970253
## final value 9664.970253
## stopped after 100 iterations
## # weights: 160
## initial value 14143.151222
## iter 10 value 10138.362626
## iter 20 value 9610.282776
## iter 30 value 9369.117725
## iter 40 value 9200.950104
## iter 50 value 9074.509834
## iter 60 value 9001.116612
## iter 70 value 8908.528354
## iter 80 value 8842.233647
## iter 90 value 8821.859803
## iter 100 value 8813.144657
## final value 8813.144657
## stopped after 100 iterations
## # weights: 266
## initial value 12095.526160
## iter 10 value 9995.430812
## iter 20 value 9565.209945
## iter 30 value 9416.404846
## iter 40 value 9324.688666
## iter 50 value 9162.318808
## iter 60 value 8952.811078
## iter 70 value 8708.345233
## iter 80 value 8584.830564
## iter 90 value 8536.739584
## iter 100 value 8489.029707
## final value 8489.029707
## stopped after 100 iterations
## # weights: 54
## initial value 12211.751162
## iter 10 value 10522.910980
## iter 20 value 9883.391448
## iter 30 value 9744.509150
## iter 40 value 9684.021166
## iter 50 value 9644.059441
## iter 60 value 9616.892182
## iter 70 value 9597.055490
## iter 80 value 9586.736552
## iter 90 value 9586.396532
## final value 9586.390413
## converged
## # weights: 160
## initial value 12956.508392
## iter 10 value 10483.313191
## iter 20 value 9920.443216
## iter 30 value 9692.592295
## iter 40 value 9630.540950
## iter 50 value 9556.425435
## iter 60 value 9502.991728
## iter 70 value 9467.693419
## iter 80 value 9455.549788
## iter 90 value 9442.909070
## iter 100 value 9412.745249
## final value 9412.745249
## stopped after 100 iterations
## # weights: 266
## initial value 14742.151332
## iter 10 value 9821.917196
## iter 20 value 9428.314974
## iter 30 value 9264.464593
## iter 40 value 9148.610248
## iter 50 value 9077.953754
## iter 60 value 9027.397095
## iter 70 value 9001.512154
## iter 80 value 8982.823920
## iter 90 value 8960.081748
## iter 100 value 8908.170673
## final value 8908.170673
## stopped after 100 iterations
## # weights: 54
## initial value 12190.808100
## iter 10 value 11109.882229
## iter 20 value 10035.863863
## iter 30 value 9748.069486
## iter 40 value 9690.144733
## iter 50 value 9637.126708
## iter 60 value 9619.676342
## iter 70 value 9599.302863
## iter 80 value 9573.470609
## iter 90 value 9573.407944
## iter 100 value 9573.379636
## final value 9573.379636
## stopped after 100 iterations
## # weights: 160
## initial value 12078.468390
## iter 10 value 10058.406198
## iter 20 value 9634.475589
## iter 30 value 9475.017191
## iter 40 value 9362.865243
## iter 50 value 9276.947493
## iter 60 value 9214.261123
## iter 70 value 9185.173091
## iter 80 value 9169.096225
## iter 90 value 9126.179916
## iter 100 value 9091.796622
## final value 9091.796622
## stopped after 100 iterations
## # weights: 266
## initial value 12286.906271
## iter 10 value 10139.650111
## iter 20 value 9622.540252
## iter 30 value 9335.815556
## iter 40 value 9204.916712
## iter 50 value 9158.669644
## iter 60 value 9081.313741
## iter 70 value 8967.790173
## iter 80 value 8902.374281
## iter 90 value 8820.228973
## iter 100 value 8757.676229
## final value 8757.676229
## stopped after 100 iterations
## # weights: 54
## initial value 11991.069531
## iter 10 value 10059.031091
## iter 20 value 9713.370400
## iter 30 value 9631.045151
## iter 40 value 9605.999658
## iter 50 value 9574.207409
## iter 60 value 9550.453731
## iter 70 value 9549.695046
## iter 80 value 9549.583649
## iter 90 value 9548.798117
## iter 100 value 9546.370710
## final value 9546.370710
## stopped after 100 iterations
## # weights: 160
## initial value 13574.537433
## iter 10 value 11200.448971
## iter 20 value 10094.225729
## iter 30 value 9787.028664
## iter 40 value 9594.252283
## iter 50 value 9527.399586
## iter 60 value 9496.982009
## iter 70 value 9489.922368
## iter 80 value 9489.301885
## iter 90 value 9489.286722
## iter 100 value 9489.271040
## final value 9489.271040
## stopped after 100 iterations
## # weights: 266
## initial value 13915.852657
## iter 10 value 9615.389121
## iter 20 value 9314.593323
## iter 30 value 9183.656398
## iter 40 value 9077.767985
## iter 50 value 8940.565283
## iter 60 value 8869.647866
## iter 70 value 8797.572512
## iter 80 value 8683.439362
## iter 90 value 8643.275336
## iter 100 value 8616.760647
## final value 8616.760647
## stopped after 100 iterations
## # weights: 54
## initial value 12079.403364
## iter 10 value 9860.021576
## iter 20 value 9806.294263
## iter 30 value 9775.527475
## iter 40 value 9769.738741
## iter 50 value 9764.389890
## iter 60 value 9661.561968
## iter 70 value 9597.030263
## iter 80 value 9527.120617
## iter 90 value 9503.877640
## iter 100 value 9500.647596
## final value 9500.647596
## stopped after 100 iterations
## # weights: 160
## initial value 14436.139071
## iter 10 value 10067.789366
## iter 20 value 9775.373665
## iter 30 value 9581.820661
## iter 40 value 9514.074052
## iter 50 value 9413.999088
## iter 60 value 9335.989754
## iter 70 value 9241.288851
## iter 80 value 9185.293743
## iter 90 value 9149.994245
## iter 100 value 9130.013491
## final value 9130.013491
## stopped after 100 iterations
## # weights: 266
## initial value 11632.383198
## iter 10 value 9792.016815
## iter 20 value 9492.130106
## iter 30 value 9352.859577
## iter 40 value 9281.840826
## iter 50 value 9178.846073
## iter 60 value 9077.307675
## iter 70 value 9004.454476
## iter 80 value 8897.695331
## iter 90 value 8769.490045
## iter 100 value 8696.383487
## final value 8696.383487
## stopped after 100 iterations
## # weights: 54
## initial value 11839.088279
## iter 10 value 10130.355155
## iter 20 value 9809.558782
## iter 30 value 9777.469977
## iter 40 value 9763.081836
## iter 50 value 9753.244229
## iter 60 value 9752.562899
## final value 9752.543852
## converged
## # weights: 160
## initial value 12160.762781
## iter 10 value 9786.552446
## iter 20 value 9627.193499
## iter 30 value 9497.172086
## iter 40 value 9408.476710
## iter 50 value 9333.980961
## iter 60 value 9256.248382
## iter 70 value 9162.470810
## iter 80 value 9071.250785
## iter 90 value 9043.648564
## iter 100 value 9006.059974
## final value 9006.059974
## stopped after 100 iterations
## # weights: 266
## initial value 11886.737337
## iter 10 value 9702.322432
## iter 20 value 9425.035204
## iter 30 value 9260.550692
## iter 40 value 9121.218720
## iter 50 value 8997.384765
## iter 60 value 8825.490862
## iter 70 value 8687.208674
## iter 80 value 8630.130447
## iter 90 value 8593.787506
## iter 100 value 8564.359309
## final value 8564.359309
## stopped after 100 iterations
## # weights: 54
## initial value 11827.345988
## iter 10 value 9995.829885
## iter 20 value 9699.230213
## iter 30 value 9628.873639
## iter 40 value 9618.593521
## iter 50 value 9614.172476
## iter 60 value 9614.074955
## iter 70 value 9614.041802
## iter 80 value 9612.128394
## iter 90 value 9609.051022
## iter 100 value 9607.370468
## final value 9607.370468
## stopped after 100 iterations
## # weights: 160
## initial value 12874.455390
## iter 10 value 9881.885003
## iter 20 value 9684.113159
## iter 30 value 9513.934064
## iter 40 value 9428.468196
## iter 50 value 9350.283224
## iter 60 value 9266.276375
## iter 70 value 9231.891642
## iter 80 value 9219.034531
## iter 90 value 9211.818498
## iter 100 value 9188.312920
## final value 9188.312920
## stopped after 100 iterations
## # weights: 266
## initial value 11922.585564
## iter 10 value 9991.529335
## iter 20 value 9457.859339
## iter 30 value 9178.543472
## iter 40 value 9039.654840
## iter 50 value 8985.411112
## iter 60 value 8935.097588
## iter 70 value 8888.194688
## iter 80 value 8834.817838
## iter 90 value 8779.267634
## iter 100 value 8706.302389
## final value 8706.302389
## stopped after 100 iterations
## # weights: 54
## initial value 12554.423128
## iter 10 value 10802.710250
## iter 20 value 10435.383073
## iter 30 value 9808.688831
## iter 40 value 9631.199506
## iter 50 value 9586.001518
## iter 60 value 9573.256021
## iter 70 value 9570.699076
## final value 9570.675482
## converged
## # weights: 160
## initial value 13536.136100
## iter 10 value 10075.946188
## iter 20 value 9913.960635
## iter 30 value 9638.939081
## iter 40 value 9511.042315
## iter 50 value 9459.452997
## iter 60 value 9400.474833
## iter 70 value 9352.490924
## iter 80 value 9245.438699
## iter 90 value 9179.894899
## iter 100 value 9137.915347
## final value 9137.915347
## stopped after 100 iterations
## # weights: 266
## initial value 12192.161088
## iter 10 value 9984.694877
## iter 20 value 9554.340300
## iter 30 value 9369.708214
## iter 40 value 9212.805379
## iter 50 value 9112.570592
## iter 60 value 9024.082602
## iter 70 value 8990.693691
## iter 80 value 8977.128964
## iter 90 value 8967.988762
## iter 100 value 8944.524816
## final value 8944.524816
## stopped after 100 iterations
## # weights: 54
## initial value 12345.484532
## iter 10 value 10955.335570
## iter 20 value 10149.151540
## iter 30 value 9864.042306
## iter 40 value 9671.861343
## iter 50 value 9604.692673
## iter 60 value 9582.085394
## iter 70 value 9580.380554
## iter 80 value 9580.371314
## iter 90 value 9580.302783
## iter 100 value 9579.023181
## final value 9579.023181
## stopped after 100 iterations
## # weights: 160
## initial value 12546.139555
## iter 10 value 9913.011659
## iter 20 value 9644.698863
## iter 30 value 9551.111372
## iter 40 value 9500.449834
## iter 50 value 9415.239850
## iter 60 value 9344.441913
## iter 70 value 9274.244956
## iter 80 value 9241.488835
## iter 90 value 9215.152105
## iter 100 value 9206.516657
## final value 9206.516657
## stopped after 100 iterations
## # weights: 266
## initial value 12514.028271
## iter 10 value 9858.073223
## iter 20 value 9573.621803
## iter 30 value 9372.159080
## iter 40 value 9256.783164
## iter 50 value 9192.411816
## iter 60 value 9064.156257
## iter 70 value 8953.706679
## iter 80 value 8843.254198
## iter 90 value 8789.354182
## iter 100 value 8710.894160
## final value 8710.894160
## stopped after 100 iterations
## # weights: 54
## initial value 12005.836527
## iter 10 value 11176.003038
## iter 20 value 10823.590457
## iter 30 value 10462.879188
## iter 40 value 10180.296951
## iter 50 value 9704.496176
## iter 60 value 9568.592762
## iter 70 value 9561.676478
## iter 80 value 9534.000020
## iter 90 value 9528.631458
## iter 100 value 9528.435304
## final value 9528.435304
## stopped after 100 iterations
## # weights: 160
## initial value 14204.030809
## iter 10 value 10477.156751
## iter 20 value 9757.126827
## iter 30 value 9591.341836
## iter 40 value 9458.423325
## iter 50 value 9375.267959
## iter 60 value 9330.737625
## iter 70 value 9304.607394
## iter 80 value 9282.819840
## iter 90 value 9274.530431
## iter 100 value 9271.452597
## final value 9271.452597
## stopped after 100 iterations
## # weights: 266
## initial value 11990.464758
## iter 10 value 9767.812089
## iter 20 value 9412.228872
## iter 30 value 9242.133072
## iter 40 value 9035.875897
## iter 50 value 8930.667398
## iter 60 value 8848.865829
## iter 70 value 8800.433318
## iter 80 value 8775.090683
## iter 90 value 8739.164842
## iter 100 value 8695.872833
## final value 8695.872833
## stopped after 100 iterations
## # weights: 54
## initial value 12430.278310
## iter 10 value 11671.679375
## iter 20 value 11373.272441
## iter 30 value 10802.144493
## iter 40 value 9858.514891
## iter 50 value 9661.485012
## iter 60 value 9631.681114
## iter 70 value 9565.719567
## iter 80 value 9549.775433
## iter 90 value 9542.542741
## iter 100 value 9541.192783
## final value 9541.192783
## stopped after 100 iterations
## # weights: 160
## initial value 15732.558767
## iter 10 value 10090.352269
## iter 20 value 9715.167636
## iter 30 value 9554.167055
## iter 40 value 9462.219157
## iter 50 value 9394.069817
## iter 60 value 9330.282221
## iter 70 value 9291.982386
## iter 80 value 9275.299177
## iter 90 value 9257.567694
## iter 100 value 9246.651981
## final value 9246.651981
## stopped after 100 iterations
## # weights: 266
## initial value 13291.745786
## iter 10 value 10055.896179
## iter 20 value 9569.356324
## iter 30 value 9381.789394
## iter 40 value 9178.126293
## iter 50 value 9077.752032
## iter 60 value 9030.104577
## iter 70 value 8972.877597
## iter 80 value 8899.554585
## iter 90 value 8804.927010
## iter 100 value 8692.543217
## final value 8692.543217
## stopped after 100 iterations
## # weights: 54
## initial value 11981.571485
## iter 10 value 10448.718881
## iter 20 value 9975.313499
## iter 30 value 9701.849204
## iter 40 value 9577.146866
## iter 50 value 9540.934639
## iter 60 value 9530.265992
## iter 70 value 9528.702723
## iter 80 value 9528.639029
## iter 80 value 9528.638978
## iter 80 value 9528.638975
## final value 9528.638975
## converged
## # weights: 160
## initial value 18660.602873
## iter 10 value 10072.576800
## iter 20 value 9686.687257
## iter 30 value 9469.342139
## iter 40 value 9355.110855
## iter 50 value 9282.305003
## iter 60 value 9210.597628
## iter 70 value 9144.007233
## iter 80 value 9121.468985
## iter 90 value 9108.849645
## iter 100 value 9040.092618
## final value 9040.092618
## stopped after 100 iterations
## # weights: 266
## initial value 12520.707172
## iter 10 value 9706.485452
## iter 20 value 9414.073029
## iter 30 value 9147.260006
## iter 40 value 8900.429153
## iter 50 value 8769.550934
## iter 60 value 8652.038223
## iter 70 value 8577.893951
## iter 80 value 8519.474439
## iter 90 value 8485.572231
## iter 100 value 8455.355813
## final value 8455.355813
## stopped after 100 iterations
## # weights: 54
## initial value 12178.489860
## iter 10 value 10958.318522
## iter 20 value 10310.553804
## iter 30 value 9944.673835
## iter 40 value 9883.681224
## iter 50 value 9806.889913
## iter 60 value 9752.261733
## iter 70 value 9738.980032
## iter 80 value 9738.524661
## iter 90 value 9738.422710
## iter 100 value 9738.337620
## final value 9738.337620
## stopped after 100 iterations
## # weights: 160
## initial value 12264.454928
## iter 10 value 10068.290616
## iter 20 value 9611.825261
## iter 30 value 9501.390057
## iter 40 value 9452.465920
## iter 50 value 9345.463621
## iter 60 value 9285.955931
## iter 70 value 9252.768853
## iter 80 value 9214.013112
## iter 90 value 9182.627467
## iter 100 value 9160.155312
## final value 9160.155312
## stopped after 100 iterations
## # weights: 266
## initial value 12619.733785
## iter 10 value 9835.504768
## iter 20 value 9435.078435
## iter 30 value 9267.671255
## iter 40 value 9156.999835
## iter 50 value 9031.053517
## iter 60 value 8883.208272
## iter 70 value 8829.184583
## iter 80 value 8790.199171
## iter 90 value 8727.241370
## iter 100 value 8687.184902
## final value 8687.184902
## stopped after 100 iterations
## # weights: 54
## initial value 12572.962543
## iter 10 value 11726.028436
## iter 20 value 10020.934363
## iter 30 value 9758.222097
## iter 40 value 9624.968042
## iter 50 value 9589.907910
## iter 60 value 9581.981104
## final value 9580.523886
## converged
## # weights: 160
## initial value 14962.976782
## iter 10 value 10279.108761
## iter 20 value 9686.270970
## iter 30 value 9536.038977
## iter 40 value 9407.424347
## iter 50 value 9324.889610
## iter 60 value 9290.709218
## iter 70 value 9273.604245
## iter 80 value 9267.541386
## iter 90 value 9264.625004
## iter 100 value 9262.163525
## final value 9262.163525
## stopped after 100 iterations
## # weights: 266
## initial value 12498.803888
## iter 10 value 9819.720999
## iter 20 value 9468.007628
## iter 30 value 9353.496584
## iter 40 value 9257.937303
## iter 50 value 9156.651871
## iter 60 value 9093.652438
## iter 70 value 9032.946694
## iter 80 value 8993.035879
## iter 90 value 8948.006025
## iter 100 value 8915.945544
## final value 8915.945544
## stopped after 100 iterations
## # weights: 54
## initial value 12791.928776
## final value 11911.565361
## converged
## # weights: 160
## initial value 12720.901913
## iter 10 value 10011.629520
## iter 20 value 9462.522779
## iter 30 value 9342.286341
## iter 40 value 9230.160187
## iter 50 value 9113.324463
## iter 60 value 9040.584764
## iter 70 value 8956.554074
## iter 80 value 8895.690323
## iter 90 value 8865.719518
## iter 100 value 8852.256525
## final value 8852.256525
## stopped after 100 iterations
## # weights: 266
## initial value 11945.506081
## iter 10 value 9973.536273
## iter 20 value 9539.884468
## iter 30 value 9273.751835
## iter 40 value 9120.288799
## iter 50 value 9030.163610
## iter 60 value 8979.755485
## iter 70 value 8900.062027
## iter 80 value 8837.957483
## iter 90 value 8772.523553
## iter 100 value 8707.893725
## final value 8707.893725
## stopped after 100 iterations
## # weights: 54
## initial value 12178.579396
## iter 10 value 11246.852597
## iter 20 value 10443.820834
## iter 30 value 9899.016510
## iter 40 value 9667.350843
## iter 50 value 9628.577941
## iter 60 value 9622.886181
## iter 70 value 9622.678563
## iter 80 value 9622.550593
## iter 90 value 9622.331384
## iter 100 value 9622.252698
## final value 9622.252698
## stopped after 100 iterations
## # weights: 160
## initial value 12270.859478
## iter 10 value 10302.686890
## iter 20 value 9640.314831
## iter 30 value 9468.067455
## iter 40 value 9385.290839
## iter 50 value 9323.834152
## iter 60 value 9292.520476
## iter 70 value 9224.362513
## iter 80 value 9157.779900
## iter 90 value 9120.183427
## iter 100 value 9098.741364
## final value 9098.741364
## stopped after 100 iterations
## # weights: 266
## initial value 12271.504651
## iter 10 value 10222.616202
## iter 20 value 9621.094883
## iter 30 value 9455.258342
## iter 40 value 9350.953902
## iter 50 value 9231.771498
## iter 60 value 9147.114190
## iter 70 value 9086.873632
## iter 80 value 9010.676302
## iter 90 value 8951.435385
## iter 100 value 8910.681657
## final value 8910.681657
## stopped after 100 iterations
## # weights: 54
## initial value 12119.378681
## iter 10 value 11832.462438
## iter 20 value 11391.108590
## iter 30 value 11136.606354
## iter 40 value 10530.260964
## iter 50 value 10199.131971
## iter 60 value 9837.655555
## iter 70 value 9714.496441
## iter 80 value 9648.003222
## iter 90 value 9612.216644
## iter 100 value 9596.882862
## final value 9596.882862
## stopped after 100 iterations
## # weights: 160
## initial value 12677.584862
## iter 10 value 9834.859445
## iter 20 value 9554.185109
## iter 30 value 9436.635368
## iter 40 value 9364.701957
## iter 50 value 9317.831702
## iter 60 value 9194.306731
## iter 70 value 9078.954951
## iter 80 value 9021.932491
## iter 90 value 8995.884652
## iter 100 value 8976.425277
## final value 8976.425277
## stopped after 100 iterations
## # weights: 266
## initial value 14970.847230
## iter 10 value 10193.610798
## iter 20 value 9597.820041
## iter 30 value 9392.187800
## iter 40 value 9246.162972
## iter 50 value 9152.848952
## iter 60 value 9096.648355
## iter 70 value 9033.065249
## iter 80 value 8944.536836
## iter 90 value 8867.938448
## iter 100 value 8832.791496
## final value 8832.791496
## stopped after 100 iterations
## # weights: 54
## initial value 12071.651912
## iter 10 value 11568.662344
## iter 20 value 11234.973376
## iter 30 value 10788.930493
## iter 40 value 10517.407075
## iter 50 value 10498.324362
## iter 60 value 10494.506047
## iter 70 value 10494.157607
## iter 80 value 10494.126457
## iter 80 value 10494.126354
## iter 80 value 10494.126329
## final value 10494.126329
## converged
## # weights: 160
## initial value 11862.349456
## iter 10 value 9791.118358
## iter 20 value 9559.381528
## iter 30 value 9384.152513
## iter 40 value 9306.521617
## iter 50 value 9268.474019
## iter 60 value 9232.411854
## iter 70 value 9203.707529
## iter 80 value 9173.206746
## iter 90 value 9149.784411
## iter 100 value 9129.071114
## final value 9129.071114
## stopped after 100 iterations
## # weights: 266
## initial value 12265.422486
## iter 10 value 9782.636950
## iter 20 value 9513.027931
## iter 30 value 9358.434189
## iter 40 value 9188.117037
## iter 50 value 9016.329705
## iter 60 value 8942.308547
## iter 70 value 8864.243089
## iter 80 value 8790.549268
## iter 90 value 8734.119158
## iter 100 value 8707.645483
## final value 8707.645483
## stopped after 100 iterations
## # weights: 54
## initial value 12435.796388
## iter 10 value 10562.454893
## iter 20 value 9861.580776
## iter 30 value 9753.839144
## iter 40 value 9729.036675
## iter 50 value 9715.498744
## iter 60 value 9702.904618
## iter 70 value 9701.991953
## final value 9701.977664
## converged
## # weights: 160
## initial value 13627.199708
## iter 10 value 10155.768081
## iter 20 value 9901.273067
## iter 30 value 9704.591540
## iter 40 value 9620.977992
## iter 50 value 9451.458459
## iter 60 value 9315.524812
## iter 70 value 9250.885853
## iter 80 value 9220.417156
## iter 90 value 9167.282288
## iter 100 value 9122.288918
## final value 9122.288918
## stopped after 100 iterations
## # weights: 266
## initial value 11989.338981
## iter 10 value 9819.941691
## iter 20 value 9604.082110
## iter 30 value 9460.560949
## iter 40 value 9338.162400
## iter 50 value 9255.800729
## iter 60 value 9134.545112
## iter 70 value 9029.617970
## iter 80 value 8933.829328
## iter 90 value 8847.447171
## iter 100 value 8753.239785
## final value 8753.239785
## stopped after 100 iterations
## # weights: 54
## initial value 11803.276403
## iter 10 value 11042.972260
## iter 20 value 10657.536953
## iter 30 value 10362.772590
## iter 40 value 10078.557127
## iter 50 value 9913.078880
## iter 60 value 9747.808761
## iter 70 value 9721.464596
## iter 80 value 9706.633977
## iter 90 value 9706.327450
## iter 90 value 9706.327418
## iter 90 value 9706.327418
## final value 9706.327418
## converged
## # weights: 160
## initial value 12274.873387
## iter 10 value 10116.201009
## iter 20 value 9684.254668
## iter 30 value 9493.153274
## iter 40 value 9439.035608
## iter 50 value 9406.357385
## iter 60 value 9380.481087
## iter 70 value 9361.637745
## iter 80 value 9355.182420
## iter 90 value 9352.988699
## iter 100 value 9350.736905
## final value 9350.736905
## stopped after 100 iterations
## # weights: 266
## initial value 12374.602184
## iter 10 value 9894.310821
## iter 20 value 9647.539335
## iter 30 value 9495.477465
## iter 40 value 9368.648255
## iter 50 value 9281.247548
## iter 60 value 9217.932138
## iter 70 value 9182.046877
## iter 80 value 9158.744593
## iter 90 value 9131.976459
## iter 100 value 9091.212596
## final value 9091.212596
## stopped after 100 iterations
## # weights: 54
## initial value 12319.844795
## iter 10 value 11508.872010
## iter 20 value 10005.731488
## iter 30 value 9738.187602
## iter 40 value 9721.610918
## iter 50 value 9712.956751
## iter 60 value 9704.570667
## iter 70 value 9702.065900
## final value 9702.057857
## converged
## # weights: 160
## initial value 12274.339656
## iter 10 value 9874.967051
## iter 20 value 9632.883689
## iter 30 value 9469.526003
## iter 40 value 9394.375461
## iter 50 value 9359.285976
## iter 60 value 9273.788772
## iter 70 value 9213.321252
## iter 80 value 9170.227856
## iter 90 value 9126.162470
## iter 100 value 9092.234839
## final value 9092.234839
## stopped after 100 iterations
## # weights: 266
## initial value 12264.247688
## iter 10 value 10089.224681
## iter 20 value 9577.948779
## iter 30 value 9466.390160
## iter 40 value 9312.613697
## iter 50 value 9199.762214
## iter 60 value 9036.386086
## iter 70 value 8934.684401
## iter 80 value 8882.775329
## iter 90 value 8859.437295
## iter 100 value 8836.174130
## final value 8836.174130
## stopped after 100 iterations
## # weights: 54
## initial value 13566.662241
## final value 11909.867218
## converged
## # weights: 160
## initial value 12060.097570
## iter 10 value 10077.522291
## iter 20 value 9575.562931
## iter 30 value 9482.467900
## iter 40 value 9393.542016
## iter 50 value 9272.969792
## iter 60 value 9211.085634
## iter 70 value 9186.340428
## iter 80 value 9161.110965
## iter 90 value 9136.658843
## iter 100 value 9115.226373
## final value 9115.226373
## stopped after 100 iterations
## # weights: 266
## initial value 14700.889482
## iter 10 value 9855.336802
## iter 20 value 9456.931591
## iter 30 value 9290.078519
## iter 40 value 9071.638152
## iter 50 value 8892.104026
## iter 60 value 8763.761413
## iter 70 value 8697.266563
## iter 80 value 8661.481792
## iter 90 value 8626.978629
## iter 100 value 8590.509100
## final value 8590.509100
## stopped after 100 iterations
## # weights: 54
## initial value 12206.127503
## iter 10 value 10927.864971
## iter 20 value 10626.594529
## iter 30 value 10435.704102
## iter 40 value 10336.528490
## iter 50 value 9880.009638
## iter 60 value 9619.644560
## iter 70 value 9576.677325
## iter 80 value 9564.334530
## iter 90 value 9554.324581
## iter 100 value 9551.176802
## final value 9551.176802
## stopped after 100 iterations
## # weights: 160
## initial value 11715.950027
## iter 10 value 9861.665330
## iter 20 value 9560.146930
## iter 30 value 9440.828138
## iter 40 value 9351.363816
## iter 50 value 9285.357158
## iter 60 value 9258.101217
## iter 70 value 9243.406074
## iter 80 value 9231.788761
## iter 90 value 9222.676761
## iter 100 value 9162.459190
## final value 9162.459190
## stopped after 100 iterations
## # weights: 266
## initial value 12526.302286
## iter 10 value 9883.860683
## iter 20 value 9481.967245
## iter 30 value 9351.417352
## iter 40 value 9238.643344
## iter 50 value 9172.121576
## iter 60 value 9132.457588
## iter 70 value 9107.616814
## iter 80 value 9077.299571
## iter 90 value 9056.557818
## iter 100 value 9042.725668
## final value 9042.725668
## stopped after 100 iterations
## # weights: 54
## initial value 12492.879839
## iter 10 value 10589.227112
## iter 20 value 9979.869692
## iter 30 value 9916.638276
## iter 40 value 9867.379501
## iter 50 value 9862.559550
## iter 60 value 9853.976836
## iter 70 value 9838.616040
## iter 80 value 9678.674100
## iter 90 value 9583.473863
## iter 100 value 9559.244525
## final value 9559.244525
## stopped after 100 iterations
## # weights: 160
## initial value 12194.598800
## iter 10 value 9903.749801
## iter 20 value 9809.696398
## iter 30 value 9645.170503
## iter 40 value 9550.822816
## iter 50 value 9480.266966
## iter 60 value 9381.577986
## iter 70 value 9323.822143
## iter 80 value 9281.654918
## iter 90 value 9262.000043
## iter 100 value 9237.079938
## final value 9237.079938
## stopped after 100 iterations
## # weights: 266
## initial value 13045.609412
## iter 10 value 9974.684105
## iter 20 value 9486.200011
## iter 30 value 9267.238927
## iter 40 value 9001.173742
## iter 50 value 8821.641530
## iter 60 value 8651.962478
## iter 70 value 8579.358818
## iter 80 value 8526.864489
## iter 90 value 8486.781868
## iter 100 value 8472.623138
## final value 8472.623138
## stopped after 100 iterations
## # weights: 54
## initial value 12266.156780
## iter 10 value 10150.015516
## iter 20 value 9852.452445
## iter 30 value 9656.842264
## iter 40 value 9616.773019
## iter 50 value 9604.953991
## iter 60 value 9592.077503
## iter 70 value 9591.750592
## iter 80 value 9591.714798
## iter 80 value 9591.714737
## iter 80 value 9591.714737
## final value 9591.714737
## converged
## # weights: 160
## initial value 12814.783648
## iter 10 value 10337.537900
## iter 20 value 9646.607998
## iter 30 value 9531.319395
## iter 40 value 9409.210478
## iter 50 value 9272.322587
## iter 60 value 9246.082266
## iter 70 value 9222.205478
## iter 80 value 9205.956256
## iter 90 value 9198.646597
## iter 100 value 9192.918050
## final value 9192.918050
## stopped after 100 iterations
## # weights: 266
## initial value 12028.401507
## iter 10 value 9792.008799
## iter 20 value 9415.854561
## iter 30 value 9214.222054
## iter 40 value 9128.361555
## iter 50 value 9054.579098
## iter 60 value 8966.229980
## iter 70 value 8931.135601
## iter 80 value 8903.370746
## iter 90 value 8878.747494
## iter 100 value 8840.268060
## final value 8840.268060
## stopped after 100 iterations
## # weights: 54
## initial value 12196.195218
## iter 10 value 11190.549670
## iter 20 value 10550.213341
## iter 30 value 10021.862523
## iter 40 value 9850.970441
## iter 50 value 9649.085179
## iter 60 value 9617.037581
## iter 70 value 9612.163631
## iter 80 value 9608.563958
## iter 90 value 9607.092660
## iter 100 value 9606.563875
## final value 9606.563875
## stopped after 100 iterations
## # weights: 160
## initial value 12461.928347
## iter 10 value 11348.257188
## iter 20 value 10180.101467
## iter 30 value 9867.596932
## iter 40 value 9650.975166
## iter 50 value 9466.534565
## iter 60 value 9383.304021
## iter 70 value 9333.736310
## iter 80 value 9314.955388
## iter 90 value 9303.836086
## iter 100 value 9276.860819
## final value 9276.860819
## stopped after 100 iterations
## # weights: 266
## initial value 16358.093304
## iter 10 value 10018.288505
## iter 20 value 9631.110791
## iter 30 value 9396.108121
## iter 40 value 9260.853454
## iter 50 value 9214.753985
## iter 60 value 9196.090489
## iter 70 value 9175.054216
## iter 80 value 9154.111829
## iter 90 value 9135.297703
## iter 100 value 9124.595390
## final value 9124.595390
## stopped after 100 iterations
## # weights: 54
## initial value 12347.861751
## iter 10 value 11704.839771
## iter 20 value 10998.631846
## iter 30 value 9998.689292
## iter 40 value 9726.902521
## iter 50 value 9676.251941
## iter 60 value 9672.702820
## iter 70 value 9672.545691
## iter 80 value 9672.490114
## iter 80 value 9672.490079
## iter 80 value 9672.490075
## final value 9672.490075
## converged
## # weights: 160
## initial value 12013.591496
## iter 10 value 10521.948731
## iter 20 value 9611.292390
## iter 30 value 9486.493526
## iter 40 value 9368.191990
## iter 50 value 9264.089510
## iter 60 value 9138.646358
## iter 70 value 9066.173689
## iter 80 value 9019.754163
## iter 90 value 8992.037167
## iter 100 value 8977.188120
## final value 8977.188120
## stopped after 100 iterations
## # weights: 266
## initial value 12819.318609
## iter 10 value 9816.407985
## iter 20 value 9398.761962
## iter 30 value 9258.218420
## iter 40 value 9108.278783
## iter 50 value 8974.661691
## iter 60 value 8880.095463
## iter 70 value 8799.155850
## iter 80 value 8704.726275
## iter 90 value 8653.999064
## iter 100 value 8608.278132
## final value 8608.278132
## stopped after 100 iterations
## # weights: 54
## initial value 12534.092520
## iter 10 value 11539.531203
## iter 20 value 10715.831057
## iter 30 value 10579.851906
## iter 40 value 10447.027013
## iter 50 value 10062.150779
## iter 60 value 9895.077470
## iter 70 value 9797.795127
## iter 80 value 9784.677757
## iter 90 value 9741.447830
## iter 100 value 9701.852842
## final value 9701.852842
## stopped after 100 iterations
## # weights: 160
## initial value 14024.533485
## iter 10 value 11399.430056
## iter 20 value 10240.423196
## iter 30 value 9661.476440
## iter 40 value 9554.400463
## iter 50 value 9493.235744
## iter 60 value 9469.302562
## iter 70 value 9395.272520
## iter 80 value 9329.629521
## iter 90 value 9277.162356
## iter 100 value 9237.344448
## final value 9237.344448
## stopped after 100 iterations
## # weights: 266
## initial value 12021.103319
## iter 10 value 10009.800653
## iter 20 value 9542.174020
## iter 30 value 9391.488903
## iter 40 value 9266.985766
## iter 50 value 9077.168638
## iter 60 value 8903.856421
## iter 70 value 8822.006246
## iter 80 value 8781.708621
## iter 90 value 8719.125218
## iter 100 value 8639.966461
## final value 8639.966461
## stopped after 100 iterations
## # weights: 54
## initial value 12455.637244
## iter 10 value 11912.606024
## iter 20 value 10260.147257
## iter 30 value 9788.165819
## iter 40 value 9707.616506
## iter 50 value 9649.950125
## iter 60 value 9622.304079
## iter 70 value 9618.496870
## final value 9618.455591
## converged
## # weights: 160
## initial value 11864.119043
## iter 10 value 10196.758702
## iter 20 value 9972.470922
## iter 30 value 9841.908163
## iter 40 value 9765.002373
## iter 50 value 9623.097102
## iter 60 value 9548.337160
## iter 70 value 9485.878408
## iter 80 value 9427.973599
## iter 90 value 9381.171076
## iter 100 value 9358.183757
## final value 9358.183757
## stopped after 100 iterations
## # weights: 266
## initial value 11736.308608
## iter 10 value 9907.131906
## iter 20 value 9480.868852
## iter 30 value 9344.294190
## iter 40 value 9228.208340
## iter 50 value 9153.405787
## iter 60 value 9094.470146
## iter 70 value 9067.775557
## iter 80 value 9058.400738
## iter 90 value 9051.712924
## iter 100 value 9042.829914
## final value 9042.829914
## stopped after 100 iterations
## # weights: 54
## initial value 12415.732022
## iter 10 value 11491.267795
## iter 20 value 10601.024087
## iter 30 value 10193.524567
## iter 40 value 9816.553563
## iter 50 value 9633.956312
## iter 60 value 9605.163236
## iter 70 value 9604.464568
## iter 80 value 9604.366736
## final value 9604.358998
## converged
## # weights: 160
## initial value 12276.226795
## iter 10 value 10080.237365
## iter 20 value 9846.707052
## iter 30 value 9664.707319
## iter 40 value 9570.268643
## iter 50 value 9500.719268
## iter 60 value 9425.351884
## iter 70 value 9365.620894
## iter 80 value 9324.310759
## iter 90 value 9294.448235
## iter 100 value 9224.390712
## final value 9224.390712
## stopped after 100 iterations
## # weights: 266
## initial value 12325.587658
## iter 10 value 9908.670341
## iter 20 value 9605.356071
## iter 30 value 9501.748980
## iter 40 value 9376.914653
## iter 50 value 9278.170514
## iter 60 value 9139.596102
## iter 70 value 9051.974215
## iter 80 value 8992.226533
## iter 90 value 8950.744192
## iter 100 value 8906.589894
## final value 8906.589894
## stopped after 100 iterations
## # weights: 54
## initial value 12477.663776
## iter 10 value 11691.096410
## iter 20 value 10682.438629
## iter 30 value 10228.907198
## iter 40 value 9817.503898
## iter 50 value 9694.827220
## iter 60 value 9680.531023
## iter 70 value 9668.041916
## final value 9667.989863
## converged
## # weights: 160
## initial value 12140.883571
## iter 10 value 10636.273498
## iter 20 value 9937.722322
## iter 30 value 9694.610307
## iter 40 value 9602.726778
## iter 50 value 9560.726075
## iter 60 value 9506.661435
## iter 70 value 9428.550638
## iter 80 value 9397.094244
## iter 90 value 9372.720404
## iter 100 value 9355.061515
## final value 9355.061515
## stopped after 100 iterations
## # weights: 266
## initial value 12086.393982
## iter 10 value 9955.054115
## iter 20 value 9583.759134
## iter 30 value 9379.653914
## iter 40 value 9176.661576
## iter 50 value 9002.957625
## iter 60 value 8810.399974
## iter 70 value 8671.014872
## iter 80 value 8609.644531
## iter 90 value 8584.975108
## iter 100 value 8569.604517
## final value 8569.604517
## stopped after 100 iterations
## # weights: 54
## initial value 11974.729319
## iter 10 value 10245.387841
## iter 20 value 9952.733682
## iter 30 value 9899.674165
## iter 40 value 9893.649806
## iter 50 value 9728.234093
## iter 60 value 9687.400922
## iter 70 value 9674.378898
## iter 80 value 9671.100086
## iter 90 value 9668.563515
## iter 100 value 9668.274522
## final value 9668.274522
## stopped after 100 iterations
## # weights: 160
## initial value 11963.572040
## iter 10 value 9891.784251
## iter 20 value 9714.453376
## iter 30 value 9632.501420
## iter 40 value 9523.617152
## iter 50 value 9391.933751
## iter 60 value 9327.670279
## iter 70 value 9303.389688
## iter 80 value 9294.446242
## iter 90 value 9290.108925
## iter 100 value 9288.389770
## final value 9288.389770
## stopped after 100 iterations
## # weights: 266
## initial value 12811.954589
## iter 10 value 10142.311272
## iter 20 value 9785.842797
## iter 30 value 9650.723062
## iter 40 value 9594.242614
## iter 50 value 9437.772869
## iter 60 value 9306.214654
## iter 70 value 9209.055030
## iter 80 value 9132.218062
## iter 90 value 9087.838890
## iter 100 value 9050.726085
## final value 9050.726085
## stopped after 100 iterations
## # weights: 54
## initial value 12303.010283
## iter 10 value 9864.272236
## iter 20 value 9760.766461
## iter 30 value 9699.521015
## iter 40 value 9678.338790
## iter 50 value 9665.683813
## iter 60 value 9653.437546
## iter 70 value 9653.224716
## final value 9653.224517
## converged
## # weights: 160
## initial value 13056.767257
## iter 10 value 10485.449889
## iter 20 value 9841.401054
## iter 30 value 9678.906427
## iter 40 value 9571.974581
## iter 50 value 9510.716908
## iter 60 value 9436.532021
## iter 70 value 9345.721586
## iter 80 value 9235.945809
## iter 90 value 9183.374200
## iter 100 value 9120.008492
## final value 9120.008492
## stopped after 100 iterations
## # weights: 266
## initial value 13610.727139
## iter 10 value 11157.799284
## iter 20 value 10178.038060
## iter 30 value 9641.889914
## iter 40 value 9495.346429
## iter 50 value 9393.129632
## iter 60 value 9215.734984
## iter 70 value 9049.866569
## iter 80 value 8902.558995
## iter 90 value 8793.094751
## iter 100 value 8728.413039
## final value 8728.413039
## stopped after 100 iterations
## # weights: 54
## initial value 12216.254725
## iter 10 value 10323.389224
## iter 20 value 9882.379135
## iter 30 value 9695.465437
## iter 40 value 9594.055478
## iter 50 value 9567.084420
## iter 60 value 9562.105817
## iter 70 value 9561.986525
## final value 9561.979274
## converged
## # weights: 160
## initial value 12093.680035
## iter 10 value 10606.727023
## iter 20 value 9865.465955
## iter 30 value 9523.722166
## iter 40 value 9396.783083
## iter 50 value 9279.627136
## iter 60 value 9188.971924
## iter 70 value 9122.662898
## iter 80 value 9095.015524
## iter 90 value 9070.406794
## iter 100 value 9032.994945
## final value 9032.994945
## stopped after 100 iterations
## # weights: 266
## initial value 13663.293342
## iter 10 value 9694.347879
## iter 20 value 9323.097749
## iter 30 value 9115.870545
## iter 40 value 8960.346992
## iter 50 value 8835.174372
## iter 60 value 8763.215235
## iter 70 value 8718.822506
## iter 80 value 8678.208658
## iter 90 value 8641.083830
## iter 100 value 8620.522939
## final value 8620.522939
## stopped after 100 iterations
## # weights: 54
## initial value 14414.985329
## iter 10 value 11921.475260
## iter 20 value 11134.615252
## iter 30 value 10373.781537
## iter 40 value 10198.373944
## iter 50 value 10130.436527
## iter 60 value 10121.382934
## iter 70 value 9892.253736
## iter 80 value 9677.047998
## iter 90 value 9591.172644
## iter 100 value 9565.644640
## final value 9565.644640
## stopped after 100 iterations
## # weights: 160
## initial value 12256.398251
## iter 10 value 10156.883441
## iter 20 value 9531.057253
## iter 30 value 9375.424043
## iter 40 value 9307.197856
## iter 50 value 9266.907729
## iter 60 value 9230.142471
## iter 70 value 9218.567842
## iter 80 value 9212.653429
## iter 90 value 9206.269774
## iter 100 value 9199.397927
## final value 9199.397927
## stopped after 100 iterations
## # weights: 266
## initial value 11916.424568
## iter 10 value 9773.059742
## iter 20 value 9580.456508
## iter 30 value 9500.899491
## iter 40 value 9416.246625
## iter 50 value 9333.131842
## iter 60 value 9263.770561
## iter 70 value 9222.162601
## iter 80 value 9178.031082
## iter 90 value 9149.634317
## iter 100 value 9126.060339
## final value 9126.060339
## stopped after 100 iterations
## # weights: 54
## initial value 11991.199215
## iter 10 value 10926.032829
## iter 20 value 10160.089304
## iter 30 value 9850.155675
## iter 40 value 9676.069750
## iter 50 value 9580.531704
## iter 60 value 9554.619748
## iter 70 value 9544.527325
## iter 80 value 9544.294263
## final value 9544.290140
## converged
## # weights: 160
## initial value 13834.921233
## iter 10 value 10440.748196
## iter 20 value 9967.540223
## iter 30 value 9823.925033
## iter 40 value 9788.302471
## iter 50 value 9746.047002
## iter 60 value 9638.350784
## iter 70 value 9476.354104
## iter 80 value 9431.075928
## iter 90 value 9392.330857
## iter 100 value 9347.219636
## final value 9347.219636
## stopped after 100 iterations
## # weights: 266
## initial value 11969.949853
## iter 10 value 10399.390299
## iter 20 value 9627.486919
## iter 30 value 9432.845312
## iter 40 value 9327.833655
## iter 50 value 9265.414829
## iter 60 value 9224.754308
## iter 70 value 9172.705407
## iter 80 value 9145.696558
## iter 90 value 9121.739547
## iter 100 value 9035.690508
## final value 9035.690508
## stopped after 100 iterations
## # weights: 54
## initial value 12327.463481
## iter 10 value 10885.473790
## iter 20 value 10442.259838
## iter 30 value 10255.636827
## iter 40 value 9948.995579
## iter 50 value 9910.145502
## iter 60 value 9898.530498
## iter 70 value 9882.199103
## iter 80 value 9832.280537
## iter 90 value 9792.385544
## iter 100 value 9789.191134
## final value 9789.191134
## stopped after 100 iterations
## # weights: 160
## initial value 13457.270262
## iter 10 value 9735.912137
## iter 20 value 9461.129374
## iter 30 value 9372.548083
## iter 40 value 9311.276149
## iter 50 value 9227.371630
## iter 60 value 9157.914314
## iter 70 value 9122.195653
## iter 80 value 9097.601827
## iter 90 value 9072.438154
## iter 100 value 9023.052821
## final value 9023.052821
## stopped after 100 iterations
## # weights: 266
## initial value 11808.020759
## iter 10 value 9817.959694
## iter 20 value 9331.643791
## iter 30 value 9153.170863
## iter 40 value 9059.150912
## iter 50 value 8928.160689
## iter 60 value 8839.951723
## iter 70 value 8733.704320
## iter 80 value 8650.156680
## iter 90 value 8579.460576
## iter 100 value 8521.522117
## final value 8521.522117
## stopped after 100 iterations
## # weights: 54
## initial value 13105.555480
## iter 10 value 10923.761024
## iter 20 value 10305.645597
## iter 30 value 10206.347681
## iter 40 value 10169.496632
## iter 50 value 10142.872992
## iter 60 value 10127.670044
## iter 70 value 10121.664800
## iter 80 value 9775.219216
## iter 90 value 9585.632967
## iter 100 value 9507.332826
## final value 9507.332826
## stopped after 100 iterations
## # weights: 160
## initial value 12956.447813
## iter 10 value 10444.821851
## iter 20 value 10088.973108
## iter 30 value 9933.425277
## iter 40 value 9846.196494
## iter 50 value 9810.638020
## iter 60 value 9670.828362
## iter 70 value 9479.285841
## iter 80 value 9387.813369
## iter 90 value 9324.719831
## iter 100 value 9233.587874
## final value 9233.587874
## stopped after 100 iterations
## # weights: 266
## initial value 13446.880694
## iter 10 value 9885.836438
## iter 20 value 9378.705996
## iter 30 value 9194.602406
## iter 40 value 9104.946138
## iter 50 value 9035.437438
## iter 60 value 8959.497827
## iter 70 value 8917.053293
## iter 80 value 8889.597127
## iter 90 value 8839.289369
## iter 100 value 8725.712074
## final value 8725.712074
## stopped after 100 iterations
## # weights: 54
## initial value 12021.525121
## iter 10 value 10908.568118
## iter 20 value 10836.126982
## iter 30 value 10389.854525
## iter 40 value 9969.609241
## iter 50 value 9786.490331
## iter 60 value 9729.682753
## iter 70 value 9727.543611
## iter 80 value 9726.209611
## iter 90 value 9725.283894
## iter 100 value 9725.220697
## final value 9725.220697
## stopped after 100 iterations
## # weights: 160
## initial value 12186.433010
## iter 10 value 10339.491954
## iter 20 value 9824.917050
## iter 30 value 9489.428317
## iter 40 value 9379.393790
## iter 50 value 9230.964244
## iter 60 value 9103.884936
## iter 70 value 9027.112033
## iter 80 value 8978.292401
## iter 90 value 8969.070603
## iter 100 value 8964.426617
## final value 8964.426617
## stopped after 100 iterations
## # weights: 266
## initial value 13064.661627
## iter 10 value 9992.025615
## iter 20 value 9412.717002
## iter 30 value 9210.569037
## iter 40 value 9099.141538
## iter 50 value 9001.354475
## iter 60 value 8951.126837
## iter 70 value 8915.433132
## iter 80 value 8881.257707
## iter 90 value 8863.127621
## iter 100 value 8843.822793
## final value 8843.822793
## stopped after 100 iterations
## # weights: 54
## initial value 12755.864148
## iter 10 value 10483.969308
## iter 20 value 10050.837836
## iter 30 value 10026.604315
## iter 40 value 9969.096788
## iter 50 value 9962.543145
## iter 60 value 9961.836982
## iter 70 value 9958.824817
## iter 80 value 9927.103960
## iter 90 value 9917.113734
## iter 100 value 9915.702197
## final value 9915.702197
## stopped after 100 iterations
## # weights: 160
## initial value 12142.517697
## iter 10 value 9790.140616
## iter 20 value 9581.560804
## iter 30 value 9445.163396
## iter 40 value 9374.147322
## iter 50 value 9282.562667
## iter 60 value 9189.903907
## iter 70 value 8983.607282
## iter 80 value 8909.155857
## iter 90 value 8876.932930
## iter 100 value 8860.952706
## final value 8860.952706
## stopped after 100 iterations
## # weights: 266
## initial value 13519.495990
## iter 10 value 9711.655287
## iter 20 value 9464.971509
## iter 30 value 9335.165293
## iter 40 value 9167.955593
## iter 50 value 9073.965412
## iter 60 value 9001.197697
## iter 70 value 8954.192578
## iter 80 value 8903.043323
## iter 90 value 8871.964055
## iter 100 value 8868.066026
## final value 8868.066026
## stopped after 100 iterations
## # weights: 54
## initial value 12315.850330
## iter 10 value 10357.941319
## iter 20 value 9849.801621
## iter 30 value 9666.607041
## iter 40 value 9581.548528
## iter 50 value 9564.956482
## iter 60 value 9560.660174
## final value 9560.521830
## converged
## # weights: 160
## initial value 12707.251953
## iter 10 value 9884.107608
## iter 20 value 9682.633117
## iter 30 value 9615.264707
## iter 40 value 9578.249198
## iter 50 value 9516.672505
## iter 60 value 9466.502928
## iter 70 value 9436.585392
## iter 80 value 9396.614000
## iter 90 value 9371.045404
## iter 100 value 9325.416715
## final value 9325.416715
## stopped after 100 iterations
## # weights: 266
## initial value 12170.228127
## iter 10 value 9965.273228
## iter 20 value 9543.540518
## iter 30 value 9445.364402
## iter 40 value 9343.331581
## iter 50 value 9244.358831
## iter 60 value 9193.038824
## iter 70 value 9166.432812
## iter 80 value 9136.221334
## iter 90 value 9077.311326
## iter 100 value 9004.092402
## final value 9004.092402
## stopped after 100 iterations
## # weights: 54
## initial value 12526.665536
## iter 10 value 10666.469530
## iter 20 value 10152.144164
## iter 30 value 9919.218377
## iter 40 value 9867.062616
## iter 50 value 9863.239847
## iter 60 value 9859.526230
## final value 9859.502691
## converged
## # weights: 160
## initial value 12754.178663
## iter 10 value 10037.764264
## iter 20 value 9628.767838
## iter 30 value 9462.225247
## iter 40 value 9424.798619
## iter 50 value 9401.026849
## iter 60 value 9385.259408
## iter 70 value 9348.296523
## iter 80 value 9329.852821
## iter 90 value 9322.948382
## iter 100 value 9318.953328
## final value 9318.953328
## stopped after 100 iterations
## # weights: 266
## initial value 14283.685643
## iter 10 value 10086.214881
## iter 20 value 9506.253641
## iter 30 value 9247.280851
## iter 40 value 9083.919366
## iter 50 value 8955.159370
## iter 60 value 8855.015717
## iter 70 value 8803.892482
## iter 80 value 8769.174500
## iter 90 value 8749.620223
## iter 100 value 8715.044405
## final value 8715.044405
## stopped after 100 iterations
## # weights: 54
## initial value 12050.399032
## iter 10 value 10351.415697
## iter 20 value 10105.965199
## iter 30 value 9948.518243
## iter 40 value 9885.603126
## iter 50 value 9876.509805
## iter 60 value 9875.998616
## iter 70 value 9875.871840
## iter 80 value 9870.242747
## iter 90 value 9696.434714
## iter 100 value 9649.142793
## final value 9649.142793
## stopped after 100 iterations
## # weights: 160
## initial value 11861.452881
## iter 10 value 10098.037877
## iter 20 value 9647.213844
## iter 30 value 9397.295967
## iter 40 value 9327.827431
## iter 50 value 9310.986471
## iter 60 value 9289.597209
## iter 70 value 9253.683286
## iter 80 value 9205.242299
## iter 90 value 9184.200035
## iter 100 value 9137.260282
## final value 9137.260282
## stopped after 100 iterations
## # weights: 266
## initial value 14091.152363
## iter 10 value 9855.310586
## iter 20 value 9507.912826
## iter 30 value 9296.093427
## iter 40 value 9087.619602
## iter 50 value 8902.904384
## iter 60 value 8721.452668
## iter 70 value 8575.882392
## iter 80 value 8499.940901
## iter 90 value 8443.138432
## iter 100 value 8417.682275
## final value 8417.682275
## stopped after 100 iterations
## # weights: 54
## initial value 12034.637431
## iter 10 value 10559.003314
## iter 20 value 10134.641360
## iter 30 value 9847.358684
## iter 40 value 9673.151507
## iter 50 value 9651.695303
## iter 60 value 9625.544748
## iter 70 value 9597.840353
## iter 80 value 9586.804469
## iter 90 value 9581.337244
## iter 100 value 9575.642452
## final value 9575.642452
## stopped after 100 iterations
## # weights: 160
## initial value 12800.259050
## iter 10 value 10018.758282
## iter 20 value 9618.397210
## iter 30 value 9520.027282
## iter 40 value 9400.399111
## iter 50 value 9346.167962
## iter 60 value 9317.345873
## iter 70 value 9286.928283
## iter 80 value 9267.048921
## iter 90 value 9249.460534
## iter 100 value 9225.439556
## final value 9225.439556
## stopped after 100 iterations
## # weights: 266
## initial value 13684.238801
## iter 10 value 9898.262345
## iter 20 value 9526.949229
## iter 30 value 9371.902263
## iter 40 value 9227.868548
## iter 50 value 9085.661800
## iter 60 value 8970.353129
## iter 70 value 8850.188822
## iter 80 value 8772.626900
## iter 90 value 8664.421632
## iter 100 value 8615.294875
## final value 8615.294875
## stopped after 100 iterations
## # weights: 54
## initial value 13404.495343
## iter 10 value 11606.215127
## iter 20 value 9926.187669
## iter 30 value 9685.082711
## iter 40 value 9634.742138
## iter 50 value 9584.214715
## iter 60 value 9565.611475
## iter 70 value 9564.929791
## iter 80 value 9564.887831
## iter 90 value 9564.877869
## iter 90 value 9564.877853
## iter 90 value 9564.877852
## final value 9564.877852
## converged
## # weights: 160
## initial value 11944.855586
## iter 10 value 9979.245558
## iter 20 value 9652.217542
## iter 30 value 9522.504408
## iter 40 value 9473.851083
## iter 50 value 9439.579342
## iter 60 value 9419.854686
## iter 70 value 9408.292225
## iter 80 value 9389.433174
## iter 90 value 9351.886318
## iter 100 value 9309.689789
## final value 9309.689789
## stopped after 100 iterations
## # weights: 266
## initial value 14322.736234
## iter 10 value 9990.451074
## iter 20 value 9527.153671
## iter 30 value 9402.606018
## iter 40 value 9342.596259
## iter 50 value 9304.022440
## iter 60 value 9217.405655
## iter 70 value 9146.289036
## iter 80 value 9007.091884
## iter 90 value 8930.525363
## iter 100 value 8853.159595
## final value 8853.159595
## stopped after 100 iterations
## # weights: 54
## initial value 11947.530926
## iter 10 value 10939.075691
## iter 20 value 10152.339109
## iter 30 value 9918.220334
## iter 40 value 9838.360182
## iter 50 value 9785.763309
## iter 60 value 9727.420610
## iter 70 value 9698.787578
## iter 80 value 9698.167179
## final value 9698.165911
## converged
## # weights: 160
## initial value 12645.177988
## iter 10 value 10691.033883
## iter 20 value 9954.686434
## iter 30 value 9719.686900
## iter 40 value 9606.186671
## iter 50 value 9581.449641
## iter 60 value 9574.274903
## iter 70 value 9567.637172
## iter 80 value 9552.613177
## iter 90 value 9525.383278
## iter 100 value 9489.879444
## final value 9489.879444
## stopped after 100 iterations
## # weights: 266
## initial value 12628.716609
## iter 10 value 10142.024530
## iter 20 value 9782.440628
## iter 30 value 9563.100417
## iter 40 value 9382.579861
## iter 50 value 9282.628018
## iter 60 value 9145.206283
## iter 70 value 9093.454712
## iter 80 value 9046.113574
## iter 90 value 9011.437498
## iter 100 value 8983.632947
## final value 8983.632947
## stopped after 100 iterations
## # weights: 54
## initial value 11965.935641
## iter 10 value 10945.629147
## iter 20 value 10597.793172
## iter 30 value 10307.274430
## iter 40 value 10009.561188
## iter 50 value 9800.737832
## iter 60 value 9695.451720
## iter 70 value 9671.161744
## iter 80 value 9670.653554
## final value 9670.641822
## converged
## # weights: 160
## initial value 13066.178853
## iter 10 value 11117.813436
## iter 20 value 10409.220854
## iter 30 value 10073.380290
## iter 40 value 9919.922161
## iter 50 value 9822.696687
## iter 60 value 9726.198780
## iter 70 value 9667.838456
## iter 80 value 9650.725616
## iter 90 value 9643.770939
## iter 100 value 9632.335875
## final value 9632.335875
## stopped after 100 iterations
## # weights: 266
## initial value 12063.872977
## iter 10 value 10029.494574
## iter 20 value 9633.797021
## iter 30 value 9454.485663
## iter 40 value 9349.442514
## iter 50 value 9290.760618
## iter 60 value 9262.048164
## iter 70 value 9246.649322
## iter 80 value 9224.421942
## iter 90 value 9202.341912
## iter 100 value 9192.412805
## final value 9192.412805
## stopped after 100 iterations
## # weights: 54
## initial value 12195.269029
## iter 10 value 10103.755816
## iter 20 value 9772.654156
## iter 30 value 9709.388210
## iter 40 value 9687.297677
## iter 50 value 9669.731276
## iter 60 value 9655.823303
## iter 70 value 9655.731742
## final value 9655.730233
## converged
## # weights: 160
## initial value 13055.025607
## iter 10 value 9910.521852
## iter 20 value 9658.526548
## iter 30 value 9525.443370
## iter 40 value 9461.040325
## iter 50 value 9394.833747
## iter 60 value 9300.992418
## iter 70 value 9220.399522
## iter 80 value 9169.402572
## iter 90 value 9149.755154
## iter 100 value 9131.162368
## final value 9131.162368
## stopped after 100 iterations
## # weights: 266
## initial value 12734.804112
## iter 10 value 10271.068374
## iter 20 value 9667.406717
## iter 30 value 9582.469219
## iter 40 value 9404.058234
## iter 50 value 9239.199469
## iter 60 value 9168.846197
## iter 70 value 9111.112604
## iter 80 value 9064.335008
## iter 90 value 9028.706539
## iter 100 value 8991.438805
## final value 8991.438805
## stopped after 100 iterations
## # weights: 54
## initial value 12028.754835
## iter 10 value 10628.735818
## iter 20 value 10010.049711
## iter 30 value 9748.407925
## iter 40 value 9679.848265
## iter 50 value 9668.167621
## iter 60 value 9664.825630
## iter 70 value 9664.813782
## iter 80 value 9664.164891
## iter 90 value 9662.843911
## iter 100 value 9661.985438
## final value 9661.985438
## stopped after 100 iterations
## # weights: 160
## initial value 12297.925972
## iter 10 value 10135.112450
## iter 20 value 9780.904552
## iter 30 value 9580.128955
## iter 40 value 9449.438020
## iter 50 value 9363.064920
## iter 60 value 9342.659563
## iter 70 value 9330.843151
## iter 80 value 9310.632829
## iter 90 value 9299.357001
## iter 100 value 9283.267812
## final value 9283.267812
## stopped after 100 iterations
## # weights: 266
## initial value 12661.369402
## iter 10 value 9882.979945
## iter 20 value 9591.456693
## iter 30 value 9431.742572
## iter 40 value 9293.369974
## iter 50 value 9169.854336
## iter 60 value 8991.133005
## iter 70 value 8868.712335
## iter 80 value 8805.270186
## iter 90 value 8766.769044
## iter 100 value 8748.422287
## final value 8748.422287
## stopped after 100 iterations
## # weights: 54
## initial value 11906.566419
## iter 10 value 10142.185236
## iter 20 value 9882.196409
## iter 30 value 9777.420711
## iter 40 value 9695.502211
## iter 50 value 9685.639345
## iter 60 value 9680.006512
## iter 70 value 9676.640207
## iter 80 value 9675.264617
## iter 90 value 9674.653729
## final value 9674.606618
## converged
## # weights: 160
## initial value 12379.346886
## iter 10 value 10072.976750
## iter 20 value 9595.322705
## iter 30 value 9464.558110
## iter 40 value 9410.955196
## iter 50 value 9373.484994
## iter 60 value 9347.013517
## iter 70 value 9335.234047
## iter 80 value 9329.446727
## iter 90 value 9325.151403
## iter 100 value 9322.213141
## final value 9322.213141
## stopped after 100 iterations
## # weights: 266
## initial value 12026.112326
## iter 10 value 9838.184858
## iter 20 value 9589.922712
## iter 30 value 9426.238587
## iter 40 value 9300.870658
## iter 50 value 9197.643134
## iter 60 value 9031.837449
## iter 70 value 8905.511427
## iter 80 value 8832.974154
## iter 90 value 8788.262112
## iter 100 value 8755.310586
## final value 8755.310586
## stopped after 100 iterations
## # weights: 54
## initial value 13795.642366
## iter 10 value 11184.904135
## iter 20 value 11013.577749
## iter 30 value 10987.014918
## iter 40 value 10983.270064
## iter 50 value 10965.529848
## iter 60 value 10953.607535
## iter 70 value 10952.580643
## iter 80 value 10950.914108
## iter 90 value 10950.051838
## iter 100 value 10945.720117
## final value 10945.720117
## stopped after 100 iterations
## # weights: 160
## initial value 11843.057169
## iter 10 value 10121.946970
## iter 20 value 9701.775719
## iter 30 value 9602.189431
## iter 40 value 9543.764419
## iter 50 value 9445.345666
## iter 60 value 9310.108743
## iter 70 value 9245.596393
## iter 80 value 9184.372589
## iter 90 value 9140.356889
## iter 100 value 9077.234309
## final value 9077.234309
## stopped after 100 iterations
## # weights: 266
## initial value 13337.233696
## iter 10 value 10954.426488
## iter 20 value 10210.259375
## iter 30 value 9623.711807
## iter 40 value 9359.221866
## iter 50 value 9252.658714
## iter 60 value 9134.197247
## iter 70 value 9072.684546
## iter 80 value 9027.661889
## iter 90 value 9001.706876
## iter 100 value 8969.367483
## final value 8969.367483
## stopped after 100 iterations
## # weights: 54
## initial value 12356.869682
## iter 10 value 10961.074520
## iter 20 value 10510.095712
## iter 30 value 10123.130506
## iter 40 value 9985.020968
## iter 50 value 9965.713292
## iter 60 value 9931.943563
## iter 70 value 9789.208573
## iter 80 value 9729.171601
## iter 90 value 9706.052523
## iter 100 value 9700.782129
## final value 9700.782129
## stopped after 100 iterations
## # weights: 160
## initial value 12169.810227
## iter 10 value 10814.757881
## iter 20 value 9847.007071
## iter 30 value 9601.751542
## iter 40 value 9481.255594
## iter 50 value 9436.270079
## iter 60 value 9413.821797
## iter 70 value 9382.306568
## iter 80 value 9306.424765
## iter 90 value 9253.853569
## iter 100 value 9240.748824
## final value 9240.748824
## stopped after 100 iterations
## # weights: 266
## initial value 11992.766434
## iter 10 value 9852.488142
## iter 20 value 9532.016910
## iter 30 value 9384.156861
## iter 40 value 9243.573131
## iter 50 value 9131.489072
## iter 60 value 9056.358459
## iter 70 value 8976.871459
## iter 80 value 8911.646609
## iter 90 value 8841.191366
## iter 100 value 8798.989254
## final value 8798.989254
## stopped after 100 iterations
## # weights: 54
## initial value 12962.960709
## iter 10 value 10178.363777
## iter 20 value 9844.624432
## iter 30 value 9769.297631
## iter 40 value 9738.958920
## iter 50 value 9718.330115
## iter 60 value 9711.439443
## iter 70 value 9710.504618
## final value 9710.496037
## converged
## # weights: 160
## initial value 12250.493918
## iter 10 value 10161.975482
## iter 20 value 9892.164143
## iter 30 value 9804.421773
## iter 40 value 9737.459435
## iter 50 value 9691.939926
## iter 60 value 9620.260550
## iter 70 value 9573.018000
## iter 80 value 9555.180798
## iter 90 value 9535.951845
## iter 100 value 9517.198271
## final value 9517.198271
## stopped after 100 iterations
## # weights: 266
## initial value 12617.825745
## iter 10 value 9874.213265
## iter 20 value 9539.627470
## iter 30 value 9400.844375
## iter 40 value 9336.057708
## iter 50 value 9292.038830
## iter 60 value 9246.418940
## iter 70 value 9182.607052
## iter 80 value 9122.676508
## iter 90 value 9061.589181
## iter 100 value 9032.152608
## final value 9032.152608
## stopped after 100 iterations
## # weights: 54
## initial value 12180.616021
## iter 10 value 10151.212778
## iter 20 value 9996.306578
## iter 30 value 9933.723467
## iter 40 value 9758.986133
## iter 50 value 9729.685971
## iter 60 value 9714.622528
## iter 70 value 9711.200976
## iter 80 value 9704.840853
## iter 90 value 9701.709186
## iter 100 value 9700.655320
## final value 9700.655320
## stopped after 100 iterations
## # weights: 160
## initial value 14907.359449
## iter 10 value 10033.344136
## iter 20 value 9668.976500
## iter 30 value 9485.324989
## iter 40 value 9432.083002
## iter 50 value 9380.242051
## iter 60 value 9316.285675
## iter 70 value 9222.615150
## iter 80 value 9138.237053
## iter 90 value 9105.553521
## iter 100 value 9090.029026
## final value 9090.029026
## stopped after 100 iterations
## # weights: 266
## initial value 14503.181545
## iter 10 value 9866.121315
## iter 20 value 9604.414890
## iter 30 value 9445.959326
## iter 40 value 9311.584873
## iter 50 value 9205.961124
## iter 60 value 9154.881027
## iter 70 value 9092.061700
## iter 80 value 8998.948579
## iter 90 value 8933.575261
## iter 100 value 8842.151120
## final value 8842.151120
## stopped after 100 iterations
## # weights: 54
## initial value 12566.694784
## iter 10 value 10871.019194
## iter 20 value 10345.222332
## iter 30 value 10045.868884
## iter 40 value 9678.123288
## iter 50 value 9606.515592
## iter 60 value 9585.002051
## iter 70 value 9579.354088
## iter 80 value 9578.826115
## iter 90 value 9578.748925
## iter 100 value 9578.690767
## final value 9578.690767
## stopped after 100 iterations
## # weights: 160
## initial value 12013.144320
## iter 10 value 10491.289118
## iter 20 value 9890.507768
## iter 30 value 9573.804032
## iter 40 value 9449.134445
## iter 50 value 9387.767222
## iter 60 value 9351.489114
## iter 70 value 9307.925274
## iter 80 value 9285.698576
## iter 90 value 9254.531468
## iter 100 value 9236.390395
## final value 9236.390395
## stopped after 100 iterations
## # weights: 266
## initial value 12119.240266
## iter 10 value 9814.962200
## iter 20 value 9541.707509
## iter 30 value 9356.666751
## iter 40 value 9252.323837
## iter 50 value 9145.862856
## iter 60 value 8964.289144
## iter 70 value 8813.060554
## iter 80 value 8709.992953
## iter 90 value 8665.933902
## iter 100 value 8642.016262
## final value 8642.016262
## stopped after 100 iterations
## # weights: 54
## initial value 12803.362655
## iter 10 value 11504.360685
## iter 20 value 10798.009753
## iter 30 value 10040.798491
## iter 40 value 9788.342783
## iter 50 value 9681.426545
## iter 60 value 9608.061554
## iter 70 value 9592.064548
## iter 80 value 9590.524774
## final value 9590.496658
## converged
## # weights: 160
## initial value 11932.928138
## iter 10 value 10559.413369
## iter 20 value 9817.238623
## iter 30 value 9699.250954
## iter 40 value 9642.128316
## iter 50 value 9581.809933
## iter 60 value 9534.426165
## iter 70 value 9475.494335
## iter 80 value 9441.096378
## iter 90 value 9419.172422
## iter 100 value 9395.832507
## final value 9395.832507
## stopped after 100 iterations
## # weights: 266
## initial value 14448.924729
## iter 10 value 10644.967130
## iter 20 value 9909.804934
## iter 30 value 9496.516555
## iter 40 value 9405.733643
## iter 50 value 9310.824662
## iter 60 value 9185.653149
## iter 70 value 9109.587995
## iter 80 value 9014.244921
## iter 90 value 8900.988499
## iter 100 value 8806.825326
## final value 8806.825326
## stopped after 100 iterations
## # weights: 54
## initial value 13055.460461
## iter 10 value 11289.409062
## iter 20 value 10445.335570
## iter 30 value 10267.872339
## iter 40 value 10048.102442
## iter 50 value 9768.692204
## iter 60 value 9600.721920
## iter 70 value 9580.052865
## iter 80 value 9578.900193
## iter 90 value 9578.696578
## final value 9578.696103
## converged
## # weights: 160
## initial value 12286.675058
## iter 10 value 10467.908648
## iter 20 value 10170.102958
## iter 30 value 9801.381156
## iter 40 value 9686.974245
## iter 50 value 9589.618257
## iter 60 value 9545.794404
## iter 70 value 9490.657830
## iter 80 value 9470.025905
## iter 90 value 9457.086757
## iter 100 value 9451.301378
## final value 9451.301378
## stopped after 100 iterations
## # weights: 266
## initial value 12040.496125
## iter 10 value 9773.285784
## iter 20 value 9554.804141
## iter 30 value 9272.247528
## iter 40 value 9150.077969
## iter 50 value 9027.889594
## iter 60 value 8935.145069
## iter 70 value 8881.663666
## iter 80 value 8843.933165
## iter 90 value 8785.076432
## iter 100 value 8729.796287
## final value 8729.796287
## stopped after 100 iterations
## # weights: 54
## initial value 13246.104344
## iter 10 value 10446.363145
## iter 20 value 10150.809974
## iter 30 value 9843.301537
## iter 40 value 9654.717223
## iter 50 value 9514.023514
## iter 60 value 9503.519301
## iter 70 value 9502.553638
## iter 80 value 9502.536831
## final value 9502.531561
## converged
## # weights: 160
## initial value 12171.778088
## iter 10 value 9898.511447
## iter 20 value 9468.737707
## iter 30 value 9333.776443
## iter 40 value 9228.935330
## iter 50 value 9158.842495
## iter 60 value 9140.231877
## iter 70 value 9131.548905
## iter 80 value 9123.593750
## iter 90 value 9114.061515
## iter 100 value 9057.400254
## final value 9057.400254
## stopped after 100 iterations
## # weights: 266
## initial value 12121.522210
## iter 10 value 10197.448937
## iter 20 value 9540.725465
## iter 30 value 9367.648046
## iter 40 value 9201.809811
## iter 50 value 8980.832721
## iter 60 value 8870.298428
## iter 70 value 8751.404307
## iter 80 value 8668.244164
## iter 90 value 8633.809655
## iter 100 value 8611.679434
## final value 8611.679434
## stopped after 100 iterations
## # weights: 54
## initial value 11926.083773
## iter 10 value 10224.069528
## iter 20 value 9707.191148
## iter 30 value 9630.472124
## iter 40 value 9583.817548
## iter 50 value 9562.370329
## iter 60 value 9517.211684
## iter 70 value 9515.127861
## iter 80 value 9514.891396
## final value 9514.880562
## converged
## # weights: 160
## initial value 12092.860716
## iter 10 value 10037.449567
## iter 20 value 9661.851396
## iter 30 value 9548.220790
## iter 40 value 9513.233153
## iter 50 value 9445.480018
## iter 60 value 9368.896737
## iter 70 value 9289.865282
## iter 80 value 9249.810240
## iter 90 value 9219.530736
## iter 100 value 9189.144636
## final value 9189.144636
## stopped after 100 iterations
## # weights: 266
## initial value 12606.940351
## iter 10 value 9922.293446
## iter 20 value 9504.544501
## iter 30 value 9401.123134
## iter 40 value 9264.698079
## iter 50 value 9160.210731
## iter 60 value 9042.607257
## iter 70 value 8955.726411
## iter 80 value 8882.764013
## iter 90 value 8858.363549
## iter 100 value 8837.612203
## final value 8837.612203
## stopped after 100 iterations
## # weights: 54
## initial value 12602.683065
## iter 10 value 10231.727017
## iter 20 value 9835.864911
## iter 30 value 9630.648871
## iter 40 value 9576.085416
## iter 50 value 9553.974328
## iter 60 value 9546.552921
## iter 70 value 9529.185485
## iter 80 value 9512.278757
## iter 90 value 9504.714430
## iter 100 value 9504.005369
## final value 9504.005369
## stopped after 100 iterations
## # weights: 160
## initial value 12208.813560
## iter 10 value 10306.779540
## iter 20 value 9604.582889
## iter 30 value 9403.370032
## iter 40 value 9322.069653
## iter 50 value 9235.963657
## iter 60 value 9190.811908
## iter 70 value 9158.895365
## iter 80 value 9140.476061
## iter 90 value 9119.050847
## iter 100 value 9102.945892
## final value 9102.945892
## stopped after 100 iterations
## # weights: 266
## initial value 12654.655476
## iter 10 value 9605.385213
## iter 20 value 9403.499508
## iter 30 value 9279.829881
## iter 40 value 9134.492687
## iter 50 value 8996.562247
## iter 60 value 8828.218968
## iter 70 value 8713.252993
## iter 80 value 8670.568031
## iter 90 value 8634.011269
## iter 100 value 8598.763082
## final value 8598.763082
## stopped after 100 iterations
## # weights: 54
## initial value 11945.272486
## iter 10 value 10161.647646
## iter 20 value 9851.805036
## iter 30 value 9676.779374
## iter 40 value 9620.319777
## iter 50 value 9609.314860
## iter 60 value 9605.546994
## iter 70 value 9604.963407
## iter 80 value 9602.765654
## iter 90 value 9602.321496
## iter 100 value 9598.354768
## final value 9598.354768
## stopped after 100 iterations
## # weights: 160
## initial value 12113.321785
## iter 10 value 10537.242366
## iter 20 value 10009.468863
## iter 30 value 9770.699490
## iter 40 value 9634.769643
## iter 50 value 9584.474729
## iter 60 value 9557.364877
## iter 70 value 9531.159698
## iter 80 value 9500.663935
## iter 90 value 9473.960717
## iter 100 value 9458.051051
## final value 9458.051051
## stopped after 100 iterations
## # weights: 266
## initial value 12492.574044
## iter 10 value 9766.754339
## iter 20 value 9517.407992
## iter 30 value 9314.836319
## iter 40 value 9195.891180
## iter 50 value 9056.453100
## iter 60 value 8912.470785
## iter 70 value 8797.940983
## iter 80 value 8689.659435
## iter 90 value 8639.477456
## iter 100 value 8607.909882
## final value 8607.909882
## stopped after 100 iterations
## # weights: 54
## initial value 12616.607053
## iter 10 value 11029.794630
## iter 20 value 10894.312153
## iter 30 value 10239.952428
## iter 40 value 9831.281522
## iter 50 value 9708.052433
## iter 60 value 9657.861654
## iter 70 value 9636.365999
## iter 80 value 9634.831856
## iter 90 value 9620.570320
## iter 100 value 9600.285230
## final value 9600.285230
## stopped after 100 iterations
## # weights: 160
## initial value 12314.667905
## iter 10 value 9977.432770
## iter 20 value 9663.216150
## iter 30 value 9569.013090
## iter 40 value 9507.925719
## iter 50 value 9399.448912
## iter 60 value 9265.723499
## iter 70 value 9202.249754
## iter 80 value 9170.511503
## iter 90 value 9149.385612
## iter 100 value 9132.258976
## final value 9132.258976
## stopped after 100 iterations
## # weights: 266
## initial value 12522.236462
## iter 10 value 9829.975936
## iter 20 value 9539.160367
## iter 30 value 9395.090419
## iter 40 value 9254.218793
## iter 50 value 9108.594077
## iter 60 value 8963.883021
## iter 70 value 8835.163982
## iter 80 value 8749.132883
## iter 90 value 8700.776771
## iter 100 value 8649.315102
## final value 8649.315102
## stopped after 100 iterations
## # weights: 54
## initial value 12314.154169
## iter 10 value 11495.516481
## iter 20 value 10852.901223
## iter 30 value 10369.354112
## iter 40 value 10065.624633
## iter 50 value 9882.989771
## iter 60 value 9692.899286
## iter 70 value 9644.972731
## iter 80 value 9633.301886
## iter 90 value 9579.674463
## iter 100 value 9569.309225
## final value 9569.309225
## stopped after 100 iterations
## # weights: 160
## initial value 11968.394656
## iter 10 value 9916.472034
## iter 20 value 9615.418382
## iter 30 value 9381.524651
## iter 40 value 9239.414910
## iter 50 value 9148.250287
## iter 60 value 9099.490656
## iter 70 value 9068.073956
## iter 80 value 9040.548270
## iter 90 value 9021.399748
## iter 100 value 9006.454440
## final value 9006.454440
## stopped after 100 iterations
## # weights: 266
## initial value 12047.461868
## iter 10 value 9826.125424
## iter 20 value 9444.714466
## iter 30 value 9259.602060
## iter 40 value 9120.881443
## iter 50 value 9018.668435
## iter 60 value 8976.338233
## iter 70 value 8932.370342
## iter 80 value 8887.928945
## iter 90 value 8848.165025
## iter 100 value 8792.607256
## final value 8792.607256
## stopped after 100 iterations
## # weights: 266
## initial value 12267.069806
## iter 10 value 9774.232819
## iter 20 value 9459.040194
## iter 30 value 9318.133942
## iter 40 value 9268.860428
## iter 50 value 9228.161882
## iter 60 value 9174.827456
## iter 70 value 9104.459657
## iter 80 value 8985.980379
## iter 90 value 8854.118870
## iter 100 value 8746.288603
## final value 8746.288603
## stopped after 100 iterations
print(nn)
## Neural Network
##
## 17185 samples
## 51 predictor
## 2 classes: '0', '1'
##
## No pre-processing
## Resampling: Bootstrapped (25 reps)
## Summary of sample sizes: 17185, 17185, 17185, 17185, 17185, 17185, ...
## Resampling results across tuning parameters:
##
## size decay Accuracy Kappa
## 1 0e+00 0.7012950 0.4040463
## 1 1e-04 0.6980177 0.3976095
## 1 1e-01 0.7141634 0.4293829
## 3 0e+00 0.7163210 0.4337046
## 3 1e-04 0.7236862 0.4482863
## 3 1e-01 0.7214693 0.4438824
## 5 0e+00 0.7242442 0.4489788
## 5 1e-04 0.7222741 0.4454377
## 5 1e-01 0.7321665 0.4649093
##
## Accuracy was used to select the optimal model using the largest value.
## The final values used for the model were size = 5 and decay = 0.1.
plotnet(nn)

#variable importance(garson belongs to NeuralNetTools)
garson(nn$finalModel)+theme(axis.text.x = element_text(angle = 45, hjust = 1, size=10))

#train
nnpredtrain <- predict(nn, trainNN)
resulttrainnn <-table(predicted=nnpredtrain,true=trainNN$y)
resulttrainnn
## true
## predicted 0 1
## 0 7134 2565
## 1 1399 6087
acctrainnn =sum(diag(resulttrainnn))/sum(resulttrainnn)
acctrainnn
## [1] 0.7693337
#test
nnpredtest <- predict(nn, testNN)
resulttestnn <-table(predicted=nnpredtest,true=testNN$y)
resulttestnn
## true
## predicted 0 1
## 0 7184 2609
## 1 1536 5856
acctestnn =sum(diag(resulttestnn))/sum(resulttestnn)
acctestnn
## [1] 0.7588013
png("nn.png",height=2500, width=3000)
plot(nn)
dev.off()
## quartz_off_screen
## 2
#=============================================================